Нашёл кривое решение через грязный и отвратительный хак.
В dql-адаптер для MBRContains дописал в конце определения функции в getSql() "AND 1", а в запросе пишу "MBRContains(...) AND 1=1".
Теперь индекс используется, всё работает, а я буду молиться, чтобы этот позор никто не увидел :)