Looks like some of the 'order by' statements are pre-union. You should only sort after the unions.
I will try that and benchmark it. Thank you for the suggestion!
I think it would only work if each filter doesn't have a limit.
Ah right.