The most up-to-date version of the code can be found here. I'm currently trying to implement an elegant and low-contentionin TValue GetOrCreate(TKey key, Func<TValue> valueCreator)
function; will update thi question when I'm done.
P.s.:my own answer; since I received such great feedback, it is kinda hard to and couldn't choose onea single answer as the answer, I decided to compile the suggestions, and post the resulting code, in a single new answer. This way I'm able to share the final result with the community, acknowledge the help and still keep the question / answers valid.
I won't accept my answer as "the answer" because I don't want to fragsteal.