Concurrency error can happens at any times so you must live with them.
You can increase the number of retries.
Also if it is always the cache table that is the bottleneck, it means that you are modifying frequently data stored in the cache. So it is probably better to not store them in the cache. Now in your example, it is the cache for the view, so it is really strange to have such cache invalidation because it should be static, views and model do not change at production run time.
Side note, I’m working on a different implementation of the cache which will remove the ir_cache table bottleneck in exchange of more resource consumption.