lockedLoadData mechanism needs to decrease the load on the server.
Previously when configuration cache is cleaned on hi-loaded sites all client has generated the same information that significantly increases cpu/io load.
With lockedLoadData only one client will generate cache and others will wait for it.
More details about how it works.
The first function call "get data" callback and if it gets the data than just return it (so if data in the cache, the code work like previous and do not use any locks).
If data is not available and the lock is locked, then in the loop we try to load data until data will gets or lock was removed.
If there is no lock then we create a lock and generate data in save it in the cache and remove the lock and return data
PS: We sent these changes like a patch for one of the clients with up to 20kRPM load and it works at least 3 months, without any problem. So maybe the problem in your customization/modules (for example if they broke the cache mechanism)