Input output functions inside a PID Interrupt handler
1) If the debug functions change the behavior of the system, then you're debugging for Schrodinger bugs. You won't know if there is a bug or not because you are looking for it.
That is an issue that needs to be addressed.

You should use a fifo to output data asynchronous from the print call location. Have the print function output to the fifo, and use the TX complete interrupt to fetch a new byte to transmit. Make sure you do not overflow this fifo buffer, and that you're not interrupting the print functions with those in interrupts.
You need to treat it as log, with a low frequency of lines (like dmesg). Only on state changes, not for continuous plotting of measurement data.

2) If the setpoint arrives asynchronous, then you cannot wait for in in the PID thread.
You have to cache it somewhere else.
If the measurements are also asynchronous, then you have another problem. It makes no sense to recalculate PID when:
 - there is no new measurement.
 - the previous output was not processed yet.
You might need to lower the frequency of PID calculation.

It looks like what you describe is a simple tasker system. You have an superloop (main `while(1)) with idle priority tasks, and a few ISR with high priority or regular tasks. For example, performing DSP on the ADC samples is such a regular high priority task. If you're late, the data is irrelevant and overwritten.
Things that are lower priority, for example, is communicating with a user or reading received setpoint message frames.

The priority of the various interrupts define the task priority, and if they can preempt.
This is an extremely simple way of scheduling. But it has drawbacks. Tasks should not take longer then their interval, this included possible preempted tasks.
Make sure to setup the priorities correctly.

If you put the only watchdog reset in the superloop, you will know when any thread hung itself.
You should also watch for missed interrupts, for example, when you're still doing A, and the A IRQ is set again.

See also if an (RT)OS is of added value to your system.