Thor, can you quantify what you mean by "much more expensive"? (And qualify it - what platform, what operations?)
The way we use the locks, in heavily multi-threaded applications, you can have a lot of contention with mutexes that wouldn't exist with read/write locks, because often all threads would only require the read locks (However, a lot of the remaining contention is unnecessary because we're using a fixed array of global locks where, in theory, we could be using per-object locks rather than these per-type locks.)