Good suggestions, thanks Dave. I'm following most of it.
The reason I cannot decouple the control loop from the MPU read/radio is lack of multi-threading capability w/ the Pi Pico I am using. It has a second core, which could be used for only one more thread, and I experimented running those on that thread but ran into issues - I think a hardware-related issue with the RP2040. I vaguely recall challenges getting I2C/UART to work on the second core. Something like this.
I believe I see what you are suggesting regarding pre-calculating the PID gains w/ cycle time. I agree, that would save one less operation per PID calculation in the loop. But I believe I would NOT need to change the PID tuning values if cycle time is adjusted, with the code as is... I believe that INCLUDING cycle time in these calculations (either in loop or before) accommodates for any future changes in cycle time. In an earlier build I was not using cycle time in the calculations and this was the case where I needed to adjust PID's as cycle time changed. Including it, PID values should stay constant. This is by memory though.
I'm not following the suggestion regarding pwm/(error*seconds) and converting to nanoseconds.