Hombre, si ya lo tienes implementado, no veo necesidad de hacerlo de otra forma que no aporta ninguna mejora.
El TObjectList es una lista de objetos en memoria, digamos que podrías sobrecargar un poquitin más el sistema, por la propia creación del objeto.
5.000 elementos multiplicados por 8 bytes (los dos integers) 20.000 bytes divididos entre 1024, da 19 Kb en memoria RAM. Yo lo veo eficiente

.
No entendí muy bien lo de 50 usuarios y el hecho de que sea 5.000 mensuales. Pero bueno, haz las cuentas tú mismo
(habría que sumar el tamaño del registro y el propio Array, pero vamos que no creo que suba mucho....)
Saludos