Кварц 25МГц ни при чем. Генераторы и на бОльшей частоте могут работать. Сейчас нет времени досконально разбираться с инициализацией. Отмечу пока только то, за что глаз "зацепился".
1. При начальной инициализации нужно все регистры прописывать
явными значениями, а не накладывать маски на якобы дефолтные состояния. Я уже давно и настоятельно это всем рекомендую

2. Зачем вы инициализируете UART в 7-ми битном режиме? Протокол Modbus 8-ми битные символы использует.
3. Работа модулятора в USCI отличается от работы модулятора в USART. Я бы на вашем месте вообще пока модуляцию не использовал. Тем более, что ошибка битовой частоты получается всего 0,2%=(1048576/109-9600)/9600*100%
4. Эмулятор при чтении регистров для отображения их в окне View может изменять их состояние, сбрасывая прерывания. Следует учитывать такой эффект. Это к вашему замечанию "интеррапт флаги usci автоматически сбрасываются". Кстати, неплохо бы еще и обработчик перывания посмотреть.
5. Был/есть какой-то глюк/нюанс при использовании DCO для тактирования USCI при синхронизации FLL от REFO или часового кварца. То ли в errata описанный, то ли еще где. Найду - напишу. Суть в том, что синхронизация и модуляция DCO приводит в результате к девиации битовой частоты, которая значительно влияет на работу UART. При использовании DCO для тактирования UART рекомендуется подключать источник синхронизации (REFO или LFXT) только на время (авто)подстройки частоты DCO. Затем источник синхронизации следует отключать, чтобы DCO работал на тех значениях, что получились в результате подстройки.
Подробнее разберу вечером, когду будет время.