No te olvides que un ORDER BY puesto al final inhibe cualquier otro puesto anteriormente en un UNION. Es decir, ordenará todo el resultado en base a ese criterio.
Si lo que quieres es que te ordene los bloques independientemente, debes usar cada select como una subconsulta con su propio ORDER BY