Можно ли сделать так, чтобы запрос выполнялся дольше, но меньше загружал CPU -- может есть какие-то способы понизить приоритетность выполнения?
Обычный nice. Процессная же модель, никаких проблем понизить приоритет конкретного процесса средствами самой ОС.
Есть ли встроенные механизмы кэшированая, которым можно сказать, что для запроса Х нужно отдавать данные из кэша при вызове его чаще чем N минут\часов?
Нет, кеша запросов нет. И не будет.
ситуация когда с БД нужно собирать некоторую статистику и при этом сделать так, чтобы система не сильно тормозила
Не смешивать OLAP и OLTP вообще. Если база важная, то у неё будет hot standby. Там статистику и считать.