And I cannot create an array of variables of type 'T'.
Yes you can! Objects are always passed by reference in BlitzMAX, so just declare a two dimensional array like so:
Local myArray:T[firstDimensionSize,secondDimensionSize]
This means "create a new two dimension array of references to T objects".