Si bien parece algo incómodo, esto es lo que se puede hacer para lograr el objetivo:
SELECT FLOOR(10000 + RAND() * 89999) AS random_number
FROM table
WHERE random_number NOT IN (SELECT unique_id FROM table)
LIMIT 1
En pocas palabras, genera N números aleatorios, donde N es el recuento de filas de la tabla, filtra las que ya están presentes en la tabla y limita el conjunto restante a uno.
Podría ser algo lento en mesas grandes. Para acelerar las cosas, puede crear una vista a partir de estos identificadores únicos y usarla en lugar de una declaración de selección anidada.
EDITAR:comillas eliminadas