Да, это возможно. Вам нужно создать кучу виртуальных сетевых адаптеров (TAP или DCO), а затем связать соединение в конфигурационном файле с этими адаптерами.
Но, похоже, это работает не со всеми VPN-провайдерами.
@anarbus в глобальной переменной укажите время окончания работы, и пусть каждый поток периодически проверяет, не вышло ли это время, если вышло - завершить работу. А в асинхронной функции можно установить жесткий останов скрипта, если время превышено вдвое, например. Хотя, если всё отлажено, то асинхронка и не нужна.