A shim doesn't lower the cpu temp, in fact it might raise it a little. The only purpose of a shim is to prevent crakcing/breaking the core when putting on a hsf.
42-46C is perfectly acceptable, but we can't really compare if we don't know what mobo, heatsinks and case temp you have. You have to remember though that most mobos get the cpu temp from a socket-thermister placed under the cpu and that isn't accurate, especially with XPs.
I get 41C with my 1600+ oc'ed to 1680 with an Alpha PAL8045 with a Papst 46,5cfm fan @ at case temp of 33C, but that's the largest oc I seen of a 1600+ though.
I would recommend that heatsink with as loud/performing fan you want.