Yo no gastaría más tiempo en el randseed, está claro que al ejecutarlo reinicializa la semilla y es cuando empiezan los problemas.
¿puedes crear un simple número Int64 e ir incrementándolo cada vez que se crea un nuevo cursor? Obviamente lo pasas a string y ya tienes números bastante grandes. Incluso puedes guardarlo en un archivo .ini y continuar con él hasta cierto número predeterminado, después de eso lo reinicias:
Los GUID son creados por Microsoft y por ello no sabemos cómo están hechos, (al menos yo).
Ya puesto, puedes mezclar y el formato de fecha y hora, incluyendo milisegundos con un Int64:
Código Delphi
[-]
miLong := (miLong + 1 )
if miLong > high(int64) -1 then
miLong := low(int64);
query.name = formatDatetime('yyyymmddhhnnsszzz', now) + inttostr(miLong);
El problema según creo entender son esos cursores que acceden a las tablas de sistema ¿no?
Suerte