Легкие потоки на уровне библиотек есть практически во всех современных языках. Для упомянутой вами JavaVirtualMachine это Akka-Skala. В Go потоки и каналы введены в синтаксис языка, что дает конструкцию 'select case', которую чрезвычайно трудно реализовать в библиотеках. Идеология Хоара Communicating_Secuential_Processeses полностью на уровне синтаксиса реализована в Erlang с тем отличием от Go, что потоки именованы и к ним можно обращаться лично(в Go именованы только каналы). Вы вполне можете написать свой диспетчер на libthreads и системных вызовах epoll, kqueue. Также конкретную задачу тысячи обращений к удаленным узлам можно реализовать простым циклом, что в сущности и происходит под капотом, и такое частное решение конкретной задачи всегда будет эффективней.