С точки зрения корректности, я не вижу причин, по которым это не сработает, если у потоков нет других последствий, которые могут вызвать конфликты. Вам нужно убедиться, что вы поймали все глобалы и конвертировали их.
Лучший способ определить, значительно ли он медленнее, - это профилировать преобразованный фрагмент кода и посмотреть.
Как говорится, я не знаю, что это лучшее решение. Глобальные переменные - это просто так, независимо от того, как они называются, и они делают отслеживание состояния программы и отладку полным кошмаром. Я бы серьезно посоветовал внимательно взглянуть на код и реорганизовать по одному фрагменту за раз в поточно-ориентированный код, который не зависит от глобальных. Вам будет намного проще отладить время, и будущие сопровождающие (или вы сами) будете благодарны вам через несколько лет.