Dispersion in an RGB-based render engine will always be a hack, it might be better to wait until Smilebags and Penbem complete their work on converting Cycles to spectral rendering.
Just a thought, have you tried using the white noise node plugged into a color-ramp and into the IOR input, it is surprisingly powerful due to its ability to generate random values?