All of that is possible here, but you must have a different mindset when dealing with the problem. You can't place clouds individually now, the sky is a continuous medium.
We're going to have to if we want to keep having weather rather than a cloud layer. As Richard says, we need to define the weather outside the renderer. Precipitation needs to go under the cap cloud, up and downwash under the appropriate cloud types, turbulence to where strong convection is. And so on.
Some guiding field for the noise is perhaps needed that can be fed with position data. Positions to 'seed' cloud development in the noise field somehow. To be efficient, we can't do checks against 1000 positions, so this probably needs some kind of octree lookup to do just a few range checks. Then a way to insert position data into this vector and remove it again.
Displacing vertically is as simple as placing the cloud layer X altitude over the terrain below it.
Except the mountain displaces a single cloud, not the whole layer... I've struggled for a few months with halfway realistic cloud placement in mountain regions, it's not a simple problem at all.
Just by multiplying the coverage by this value you can get clouds over land but not over water.
Which requires to know cloud type (only convective clouds follow that pattern) and having a continuous function of the terrain type that is accessible to the shader.
I might even dare to say this is a better approach to local weather. Instead of letting the weather engine calculate all the individual cloud positions, it just calculates some specific data for the current weather and lets the shader do the rest.
I wish weather were that simple...
You need a hell lot of heuristics to get close to a real-world gliding experience in mountains - I really would not want to evaluate that per frame...