Воркер не дает работать с дом элементами и выполнять синхронные запросы - это собственно основные ограничения. Для вычислений он подходит идеально, просто код вычислений должен находится в самом воркере/воркерах. С основным скриптом он может общаться посредством сообщений. То есть не получится выполнить произвольный код в воркере, но можно выбрать из библиотек только нужные функции и завернуть их в воркер где и выполнить.
Вариант без воркера - делать вычисления поэтапно и вставлять промежутки setTimeout между этапами, чтобы не потерять отзывчивость пользовательского интерфейса.