mmm
osea la posibilidad de que se repita es practicamente nula.. ahora podrias usar en ves de rand()
un strtotime("now")
asi te devuelve el md5 del timestamp por segundo.. asegurandote de que no se duplique..
excepto que agan muchas transacciones el mismo segundo xD!
100% eficas seria esto
eso si que es imposible que se repita..
saludos!