1. Используйте object cache по максимуму. WP_Query делает все максимально правильно, насколько это возможно в архитектуре WP, и способен жестко все кешировать, давая как раз ожидаемый вами эффект. Дайте ему такую возможность.
2. Пишите кастомные запросы через $wpdb. Запросы будут сложными, с кучей джоинов и тд. И далеко не факт, что получится "за один запрос". При это дальнейшее кеширование остается на вас, придется дописывать прослойку. Сомнительная выгода.
3. Используйте внешний сервис типа ElasticSearch для индексации контента и сложных выборок, жрущих много ресурсов. На выходе получите ID постов, по которым сможете быстро получить нужные посты с минимальными затратами ресурсов. Минус - это внешний сервис. Выход - ставить его на том же сервере и общаться внутренне, кешировать запросы.