Хостера Вам конечно нужно поменять. Была как-то похожая проблема у заказчика с магазином, но там было категорий за 500 - и этого было достаточно, чтобы страница, где выводился модуль категорий, открывалась 5-10 секунд. Проблема тут в том, что сам запрос к БД используется общий - то есть в ходе запроса Вы получаете все данные, а не только те, что Вам нужно. К примеру, в случае с категориями, Вы получаете не только их названия, но и их описания - и если они заполнены - это солидный объём данных, который в данном случае был не нужен. Короче, самое простое и очевидное - кешировать результаты запроса в файл и в случае следующего запроса брать данные не из БД, а из файла. Это снизит нагрузку, да и вообще, будет работать быстрее. Можно написать для этого свой костыль (как я и делал в своё время), но в OpenCart есть свой класс кеширования - можно попробовать задействовать его для этого.