I've been bashing my head against this and this is what I've come up with so far.
TL:DR: It's not possible.
There are two layers to a tile in a map.
First is the terrain layer. It decides what the tile is, underneath it all. This can have the following values:
Land, Rugged Land, Desert, Hills, Swamp, City, Submerged, Mountain, Forest, Beach, Cliff
(there are also tactical tiles, but I won't talk about those for now)
The terrain layer is then modified by the environment layer, which is the second layer. The environment layer can have the following values:
0 Barren, 1 Dead (also known as fallen), 2 Grassland, 3 Desert, 4 Arctic
Terrain Types are defined in TerrainTypes.xml. A terraintype defines the core terrain, ie things like movement costs, who can walk on the tile, and so on. The terrain type also contains a sublist of each environment, where it is defined what each environment will look like, when applied to the terrain.
So, a desert terrain with the "dead" environment will look completely different from a Land or Rugged land tile with the environment Dead. A Rugged Land tile (to the right) with Arctic environment will look different than a Land tile (to the left) with arctic environment.
CoreEnvironments.xml contains only basic information about colour and decals (props, like the trees below).
So, in order to add a new type of environment, we need to first define it as an environment type as done in CoreEnvironments.xml. Then, we need to add this type of environment to each type of terrain (otherwise the game won't know how to react).
So far, in theory, all is well. Now is when we run into problems.
1) Environment types are in fact hardcoded. There's no way to add to the list of environment types. This is because of stupid programming design choices.
2) Environment types in TerrainTypes.xml are drawn only from the hardcoded list, and have no real connection with CoreEnvironments.xml. To clarify; the names of the environments are completely different in the files.They are referenced only indirectly through the hardcoded list. Thus, no matter what the tags contain, the order of the list is the most crucial piece of information - the game simply assumes that the first environment on the list is barren, and the second dead, and the third grassland. Since the list is hardcoded, there's no way to add a new environment to an existing terrain.
3) We can't add new terrain types either. It's a bit difficult to explain, but it appears that any new terrain type will simply overwrite the already existing one. For example, let's say we have Land, Rugged Land and New Land as terrain types. In New Land, I have opted to show Dead ground as swamp texture instead. However, this will retroactively affect Land as well. Rugged Land stays the same. I have no idea why.
Even -IF- we could add to the hardcoded list, it would just end up in the same way as spellbooknodes currently have. Ie two mods would not be compatible with each other.