The usual recommendation for using RwLock or Mutex is that if there are
about as many write as there are reads, use Mutex, and if there are more
reads than writes, use RwLock.
If after the main bottleneck (i.e. parallel traversal) is removed this shows
up on profiles, we should investigate using the parking_lot since we don't
need a poisoning API, or maybe move to different types of caches entirely.