Cita:
Iniciado por Ribon DQL no implementa el ordenar por función
Lo se, por eso te comento de SQL + DQL, por lo general se hace un SQL para obtener los id's en random y luego DQL para cargar las entities relacionadas a los id's y que tenga que tirar SQL no quiere decir que no sea portable, simplemente tienes que trabajarlo un poco mas(abstraer la query para que se genere según el engine).
Edit: Otra opcion seria generar
custom functions y hacer el load de las mismas dependiendo del engine.
Saludos.