If only I had one simple answer to that. Large database systems like ours are prone to lots of unpredictable and sometimes, incomprehensible errors. These can sometimes manifest as locks or blocks and they don't have one cause, it can be a interconnected series of events that result in a lock, which then stops all calculations in our schedulers. Sadly, to find the cause of each, we'd need a team of specialists, working on them *before* we just restart things and return the game to normal. Since we are unable to do this, we must rely on luck and past experience to try and figure the cause out when it happens. Sometimes it works, sometimes it doesn't, so the lock or block reappears after a certain unpredictable period.
TL:DR: There's no one cause for the delays, but a multitude of complex unpredictable ones which can only be properly preempted and fixed with resources beyond our reach.