Расставляйте по вычислительному коду yield-ы, планируйте вычислительные задачи на Default, блокирующий ввод-вывод на IO, и всё у вас будет хорошо. Упрётесь в бутылочное горлышко -- будете думать, что можно на отдельный экзекьютор унести для улучшения. Тут, собственно, и без корутин пришлось бы думать.