replace a few manual Lock()/Unlock() pairs with PLocker
Using PLocker helps guard against future refactors that accidentally forget to
release the scheduler mutex. This was only done in the obvious cases (Lock() and
then Unlock() immediately prior to function exit). It's possible there are other
cases PLocker could be used as well.