Fix "roscpp multithreaded spinners eat up CPU when callbacks take too long"
Resolves https://github.com/ros/ros_comm/issues/2341:
Issue #1545 was fixed in ROS melodic, but not noetic.
The fix for the issue took a rather meandering rout to getting in, but PR #1684 and PR #2014 both seem related.
As far as I can tell, the offending functions in noetic are the same as in melodic pre fix, so this might be as easy as cherry picking those changes over.
These two commits were cherry-picked from branch melodic-devel, with some merge conflict resolutions in test/test_roscpp/test/test_callback_queue.cpp due to updates in https://github.com/ros/ros_comm/pull/2121.
Not sure whether https://github.com/ros/ros_comm/pull/2121 resolving #1980 is related and would not even have been necessary with these two commits from melodic-devel? I have not checked those two in detail yet.