ISPN-4424 Synchronize updating cache entry and making a copy

Exploratory PR. Local tests and tests in Takayoshi's environment have been successful with this patch (the patch in `t_4424` failed in Takayoshi's environment).

The patch could be further improved by potentially separating GetCacheEntryCommand out of GetKeyValueCommand, in order to avoid the extra cost of 2 instance variables in GetCacheEntryCommand, and have better encapsulation of responsibilities.
I had something simpler in mind. you could invoke ```create(cacheEntry)``` that returns a mutable copy. I think it is ok the copy to be mutable, but it you really want it immutable, you can do ```immutableInternalCacheEntry(create(cacheEntry))```
this way you would avoid all the changes in CoreImmutables