Texture 2D Array Support

Simply replacing fetches of individual textures with fetches from arrays would not do anything good indeed.

Now, if you have 16 landscape layers, you need to do 16 fetches.
You need to modify material and and/or weightmap code in a such way, that you would be fetching reasonable number of times, not 16, but 2-3.

As an example, you can have 3 weightmaps. Weightmap 1 controls which array slice is picked during first fetch. Weightmap 2 controls which array slice is picked during second fetch. Weightmap 3 controls the blend between result of first and second fetch. On the output, you have a landscape with a NumArraySlices number of layers, while not being able to blend more then 2 layers at any given vertex, but costing slightly more than a material, with only 2 layers.

Alternatively, just store 3 slice IDs and their weights per each vertex.