Ich erzeuge weitere Formulare generell zur Laufzeit und verwende gar keine globalen Variablen dazu.
1500+ ist schon eine ganze Menge.
Wenn TObjectList dann besser TObjectList<TForm>.
Nicht auf die MainForm, sondern in eine separate
unit namens FormManager o.ä., die dann die MainForm benutzt.
Das Zeitverhalten halte ich für völlig unkritisch. Ggf. ist ein TDictionary besser.
Wenn man es nach aussen gut kapselt dann kann man das interne immer noch später austauschen.