Provide a future path to refactoring the Queue locking strategy

- Also tidy up some holes in locking strategy that can cause builds to be scheduled on
  executors that are about to be interrupted or nodes in the process of being removed