As far as the cultivated land is concerned, I'd personally prefer to distinguish between pasture and arable land. Gradations in actual fertility are largely accounted for by climate zones on the campaign map and terrain related gradations should be taken care of in descr_geography for the battle_maps. So, what remains would be variations due to things like lithology? I doubt that's worth spending 3 groundtypes on (4 if you count wilderness, which you might, as it too tends to be open country).
Here's my new suggestion, the problem is that many aspects of ground types are hard-coded so not everything is possible:
Swamp: Wilderness (this would be used for sandy deserts when used for the desert climates or badlands in combination with semi-arid climates) ;hard coded: movement penalty
Wilderness: Rangeland ;hard coded: shares uncultivated strat map texture with low fertility
Low fertility: Pasture ;hard coded: campaign map texture will change gradually when farm upgrades are build (but you can also use the same texture), farms will appear on the battlemap when farms are build, but those can be removed
Medium fertility: Arable land ;hard coded: campaign map texture will change gradually when farm upgrades are build (but you can also use the same texture), farms will appear on the battlemap when farms are build, but those can be removed
High fertility: Very fertile arable land ;hard coded: campaign map texture will change gradually when farm upgrades are build (but you can also use the same texture), farms will appear on the battlemap when farms are build, but those can be removed
Hills: Hills ;hard coded: bumps appear on the campaign map
Low mountains: Mountains ;hard-coded: impassable
High Mountains: Alpine peaks ;hard-coded: impassable, peaks appear on the campaign map
Sparse forest: Open/Sparse woodland ;hard coded: armies can use it to ambush other armies, sparse trees appear on the campaign map, but can be removed
Dense forest: (Dense) Forest ;hard coded: impassable, dense trees appear on the campaign map, looks weird if the trees are removed
Beach: dense shrubland (we can keep it as coast if you want) ;hard coded: nothing as far as I know
many other things like forest and shrub density, relief, micro ground types, e.t.c. can be edited in descr_geography.db
I would rather not re-purpose the beach. I think it's got some special properties that would make it hard to use elsewhere, thought I cannot be sure as I never tried it.
RSIII uses it as a desert groundtype and it works well