Правильно я планирую развернуть сеть из серверов?
Скорее всего (не видя код сложно сказать точно) корень вашей проблемы в том, что данные с сайтов получаются последовательно. В таком случае вам достаточно будет выполнять запросы параллельно с помощью https://docs.guzzlephp.org/en/stable/quickstart.ht... или https://www.php.net/manual/ru/function.curl-multi-...
Не совсем понятно, почему именно для вас 4,1 секунды - это долго, какие вообще требования закладываются? Как вариант предлагаю рассмотреть след. конфигурацию:

Разбить скрипт на 2: Первый будет делать запрос на ваши сайты, получать ответ и сохранять в спец. таблицу. Второй будет брать новые данные из этой таблицы, запускать нужный обработчик, разбирать сохраненный ответ и обновлять нужные вам данные в бд. В общем классические очереди  (гуглить по словам php queue, php jobs)

Преимущества:
1. Разделены получение и обработка данных
2. Каждую часть скрипта можно отдельно модифицировать (например, получение через параллельные запросы) 
3. Обработчиков очереди можно делать столько сколько вам нужно
4. При увеличении кол-ва сайтов время выполнения одного запроса не изменится.