Что касается того, почему это так медленно, если хост недоступен или не отвечает по какой-либо причине (например, требуются учетные данные для входа в систему), Windows будет ожидать превышения лимита времени ожидания для каждого общего ресурса, известного в сети ( который может быть несколько на хост). Таймауты Windows по умолчанию слишком велики.
Здесь может помочь сокращение времени ожидания до 50 мс (которое никогда не должно превышаться в локальной сети), в конечном итоге это зависит от количества протестированных хостов.
Не могу помочь с альтернативами API, извините.