That could easily be applied to the shader as is I think - like set the output colour to a base texture, then black will represent that texture - personally I'd rather save that for shadow casting and fake lighting

.
Remember that if your using limbs, or multiple objects - you can choose your own textures, replace ones that are not needed. For example, a sand texture might only really be needed near the water, so if a terrain has no water, then it can substitute sand for something else, like snow - you tend not to see sand and snow together, but - sand, grass, rock go together like grass, rock, and snow - all using the same shader and even possibly the same mask, just different textures to suit. I just don't think the performance hit of adding more layers is worth loosing the ability to render shadows on the terrain, really this depends on your terrain makeup though, for mine, having unique textures is no big deal because each terrain is a seperate object.
Ahh, incidently, when I said 2048x2048, I meant 2048x2048 tiles - a tile being about a square metre on my scale, it takes several minutes to get from one end to another

- so its 204800 x 204800. I'm using a very basic culling system that just checks around the camera location and creates or loads the terrain when needed. I'll check your demo tonight, be interesting to see how different it is for performance compared to mine.