I think the low write/read ratio is a common enough use case we need to come up with something to help address it. Unfortunately there are a couple of challenges to the approach you outlines.
Since we're relying on a variety of different KV stores underneath, they sometimes have very different properties. I know that LevelDB is purely single process, also to my knowledge it doesn't offer an option to open read-only. I'm not sure about boltdb being opened by multiple processes, a quick scan of the readme didn't show anything.
So, with the KV stores that have a hard requirement of single process access, it creates a bit of a dead-end since our index is tied to tightly to the KV store.
Now, lets say we were using Couchstore as the underlying KV store (its actually a bad choice for lots of reasons, but I'm familiar with it, and I know it can be safely read from multiple processes while another process writes). In that case, because of its append-only design, readers would automatically see the changes, as they always start by seeking to the end of the file to find the last valid root. Obviously this is an implementation detail, but I mention it because I think the answer to question E is that it just depends...
I think your workarounds for C and D will work, but obviously with all the costs associated with copying thing around, reloading (and blowing away all the useful stuff you already have cached at this point)
I'd definitely like to improve what we can offer in this area. If you can share more details about how you've made this work with Lucene that would be great.
Thanks,
marty