Calling interrupt_all() will immediately stop the scheduler, so it's
safe to invoke stop() beforehand, and this removes the reliance on boost
to interrupt serviceQueue().
This is a partial abckport of Core PR18234 : https://github.com/bitcoin/bitcoin/pull/18234/commits/306f71b4eb4a0fd8e64f47dc008bc235b80b13d9