UART Polling vs Interrupt
Interrupt based routines will not take over thr CPU unless you let them.

I've written many MSP430 uart drivers and the way to approach TX is to make the ISR send the bytes.  Trigger the interrupt flag and then let the ISR manage sending the bytes from a buffer. You need a couple of variables in memory to manage this, but it works very well.

Remeber that it is you that trigger the ISR to send the data. You know how many bytes to send. The ISR is quite fast, so there isn't any taking over.

You are using polling which is in fact eating up your CPU time. No reason for this. Interrupts shouldn't be feared, they should be mastered.

You didn't mention which MSP430 you're using but I've been running many MSP430 based design with multiple interfaces and never had an issue with interrupts loading the CPU. In fact customers have been extatic that issues they had before due to polling and other things were gone when I re-architected them.

You mentioned RTOS. Depending on the MSP430 this might not be practical, and you don't need it. An RTOS won't solve these kind of issues.