Another step on the way to replacing all of the RecursiveMutex
instances with the Mutex
ones.
This PR removes the RecursiveMutex
object by splitting it into two Mutex
objects, and ensuring they are always acquired in the same order.
Related to #19303.