Итак, проблема решилась следующим образом:
Как я писал выше в комментах, недоработка скрипта происходит только в определенные часы по утрам. Скорее всего удаленный сервер, с которого идет парсинг, в это время загружается служебными задачами, что увеличивает время отклика.
В логах моего сервера никаких ошибок не было. Видимо, не отвечал как надо именно удаленный сервер.
Решение пришло после изменений в этой строке:
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // изначало было 10, потом 30 (30 сек тоже не хватило)
с 60 секундами проблема ушла совсем.