In addition to the methods described above:
I've used the fake stones shader as sand grains very successfully. I don't have an example at the moment (stuck at work), but it works well and doesn't seem to add to render time.
Pretty much, just make the fake stone size quite small (such as 0.001) and add a power fractal shader as a the color (for color variation), but at the scale of the fake stone size. It will require some playing with to get just right.
As for the sand ripple displacements: Its just that - create a power fractal shader (or stack), function, or image map with these sand lines as displacement only, and before your fake stones level. Actually, perfect sand lines are very difficult to achieve and scale properly. I know it can be done with functions, but I haven't been successful yet. They are simply ridges, but one side needs to be concave, the other convex, and they need to be scalable, connect seamlessly to the next ridge, AND have line variation. Check out sand dune photos for reference. I was only able to pull it off using a sine function with a horizontal redirect. This looked well enough so I stopped there.