По идее, если обработка идёт именно в цикле (то есть по очереди!!!!), то совершенно без разницы 1 или 100500 фотографий. Загружаете, обрабатываете, выгружаете, следующее фото.
Похоже, что ограничение именно по процессору (по времени выполнения скрипта). Как вариант, отсылать на сервер изображения по одному и запускать скрипт для каждого изображения по отдельности.
Т.е. я на 100% уверен, что нужно перепроектировать код, простая покупка бОльших мощностей маскирует прблему. но не решает её. Будет не 20, а 30 изображений и опять будет таймаут. Будет разрешение выше и опять будет таймаут. Я бы попробовал перепроектировать код.