Outgoing query scheduling is suboptimal

Its sub-optimal because we will schedule a query in the future when a PTR will be close to expiring, but if the PTR is seen again between when it was scheduled and we ask again, we still ask.

In #818 the scheduler was abstracted into QueryScheduler so it should be easier to improve it now.