Estoy leyendo que utilizar ORDER BY RAND() es una burrada que se debería evitar pero las soluciones que se proponen la verdad es que no se ajustan a mis necesidades, por ello os consulto por si creeis que hay alguna manera más eficiente de solucionarlo, paso a explicar el problema.
 
Tengo una tabla de este tipo:  
 Cita:  Nombre      Prioridad
AAA                  3
BBB                  3
CCC                 2
DDD                 2
EEE                  2
FFF                   2
GGG                 1
...
    Lo que yo quiero es sacar los primeros 5 registros ordenados por Prioridad y dentro de estos que sea de forma aleatoria, para que en este caso no siempre me devuelva CCC, DDD y EEE (aunque siempre me devolverá AAA y BBB porque tienen mayor prioridad) si no que dentro de la prioridad 2 me devuelva cualquiera. 
Esto es lo que me funciona, pero quiero mejorar:   
Muchas gracias por vuestra atención