I'm pleased to say that I've made some substantial progress with this. I went back to an earlier version and tried an alternative simplification of the cloud layer.
I now have it down to a single cloud layer using the same masks but rearranged in a slightly different way.
A lot of the noise was due to the settings in the cloud fractal resulting in a low number of cloud samples even though the quality was set high. Cloud samples now set to 64 and it's nice and smooth.
The main change has been in the building of the cloud mask. Rather than use 3 cloud layers (Red, Green and Blue) I built the rainbow colour first, added it to a surface shader and set the blending shader for this to the cloud fractal (which in turn is masked by distance restrictions to limit the depth of the rainbow). The cloud colour is now white, and set to 100, so it still behaves correctly in shadows.
This makes the colour much more predictable, and simplifies the process of constructing composite rainbows. The secondary colours also stand up to fading much better.
The biggest advantage is in the improved render times which is pretty exciting. The sample below took only 20 minutes with detail 1, AA 4, no GI (no acceleration in the cloud node). For the previous versions this would have taken up to a day to render. The screengrab shows the simplified cloud network. Everything else is pretty much the same. The rainbow travels with the camera, with the only input required being the sun's heading and elevation, which can be easily scripted in an animation.
Now I just have to fix up the mixing of colours in the rainbow to suit the output of the new model.