не сравнивайте сайт эльдорадо со своим, он работает на 4 серверах по моему, используется БД MSSQL или Оракл (у QSOFT можно подробнее почитать что там сделано).
А выход какой для вас - перевестись на инфоблоки 2.0, поставить индексы по полям фильтра, отловить длинные запросы и определить откуда они вызываются, попытаться оптимизировать запросы при помощи стандартных утилит MySQL.
Если не поможет - поставить второй сервер только для MySQL, настроить работу двух серверов в связке и смотреть что будет дальше.
Была подобная задача, только там не элементов было 50к, а свойств примерно 900к. Мы вышли из ситуации следующим образом - перевели инфоблоки в инфоблоки 2.0, поставили индексы для работы выборки по фильтру, потом отказались от API Битрикса и перешли на прямые запросы.
Как вариант, вы можете сделать так - производить запрос один раз, потом сериализовать полученный массив и выводить в дальнейшем его, а не делать запросы к БД.