JCache improved concurrency of CacheManager and CacheProvider impls improved #3564

This pull request send as separate from #3564 to preserve #3564 comments
Holding a global lock while doing remote calls is just begging for problems. Apart from being a potential (big) performance problem, it can also lead to stalled threads or potential deadlocks. So we need to fix this synchronous method.

Probably it is better to use optimistic locking and if that doesn't work, it might be a solution to use a striped lock.