Run-time Dynamic Texture Atlas Materials (Matlas)

Have you seen the docs on imposters and the plugin from Ryan Bucks?

It may give you a good starting point on a lot of this, though I barely just got into it my self.
The imposter is essentially a texture atlas. So to speak. Anyway I think it’s worth a look to see if that’s close to what you are trying to do.

For the array portions, I would suggest using maps rather then arrays. Just to keep the index and the texture together. Since BP doesnt really allow most of the array functions we are accustomed to in code, like multidimensional arrays and such, you are generally better off not fiddling too much with the order of things and using maps when you really need to.
Or using C++ instead.

Anyways hope that helps.