JENKINS-25890, Queue is locked while calling PlaceholderTask.getFullDisplayName. That was fixed by making isReady, which getFullDisplayName was calling, nonblocking. The Queue lock was acquired in two reported ways: from WorkflowRun.onLoad, and from ExecutorPickle.rehydrate.
JENKINS-31614, Queue is locked while calling PlaceholderTask.getEstimatedDuration, again with two reported ways in which the Queue lock might be acquired: from WorkflowRun.onLoad (again), and PlaceholderTask.finish.
JENKINS-32304, Queue is locked while calling AfterRestartTask.getEstimatedDuration, while the Queue lock is acquired from ExecutorPickle.rehydrate.
There is no straightforward way to make either getEstimatedDuration implementation not acquire the RunMap lock, so the original fix of isReady does not help in either of these cases. Need to instead ensure that the Queue lock is not acquired synchronously from onLoad, finish, or rehydrate. In other words, accept that Queue.maintain implementations may wind up acquiring other locks.