Cradle cap *can* be indicative of a food allergy as well. Dairy and gluten are the two that come to mind. If you are nursing, try eliminating all dairy/casein from your diet for a month and see if it helps. 3 months is the "golden stardard" for elimination for food allergies to *really* know if it is working, however. (Both my girls have food and chemical sensitivities.) You should also see a drastic reduction in spit up when you go dairy-free.
Another thing that comes to mind is that a friend who had a baby with really horrible, sore cradle cap found that her son was allergic to ALOE, which is in almost everything! It's a biggie in the organic shampoos, for sure.
At 3 months, I am willing to bet he is not getting super duper dirty, and I would avoid putting ANYTHING on it but water at this point when washing, just so as not to irritate it further.
A product that we used for baby eczema was Stelatopia cream. I bought it on Amazon I think. Here is a link to the product: http://www.mustelausa.com/stelatopia_moisture_cream.html
It comes in a big tube and is creamy, not too pasty to smear on, and lasts FOREVER. It does have a slight floral/herbal scent, but it fades quickly and wasn't intrusive in my opinion (and I am sensitive to scents.)
Hope this helps.
M.