Fine-grain locking for resource checking

* Only one scanner per resource at a given time
* Stops using global lock table
* Lock bails immediately if taken by somebody else
* Adds ResourceCheckingLock named lock type

[#81247410]