an additional note about the current fog implementation (FG / osgEarth) that adds a slight twist and why the fog in the high altitude image shown above looks different. I am scaling visibility based on AGL of the eyepoint in order to see further into the distance. Near ground level, scaling is unity, as you get higher, visibility is increased. Not ideal but it works effectively.
The crucial thing is that at the edge of the terrain, skydome and 100% fogged terrain must match in color at every point. And that's generically difficult, because the skydome isn't a real object which can be fogged like any other object, it doesn't have a real distance and it can't be fogged isotropically, but must be fogged as function of altitude.
I think if you want to render from high altitude and have plausible visuals, you can't use scaled isotropic fog, you need to define a separate ground layer like ALS does.
At some level, osgEarth must just be a textured mesh - so you should be able to assign an effect to it just like one can do for a model. And would guess that a normal terrain shader would crunch it just fine.
So the first question would be - what is your skydome? Is it from FG or does it come from osgEarth somehow?
With regard to overlay texturing - it's not difficult and I know how to do that, but the info on what overlay textures to use must somehow go into the shader. In native FG scenery, we texture each triangle by landclass, and in the definition file of the landclass is the information what texture, overlay textures and other parameters should be used by the shader. For osgEarth, we would need something equivalent, something that 'tags' a pixel as belonging to desert rather than road. This can be a meta-texture for the scene into which this is coded, theoretically the landclass info, ...
I'll take a look into the osg shaders you linked, but conceptually I'd prefer to use FG-native fog, as this is already interfaced with the weather system (including the altitude dependence...).