remove rare race case on source shutdown and delayed listener termination.

if the cleanup of listeners on source shutdown is delayed enough then the 1 second trap
can kick in forcing the termination trigger to re-run.  This was forcing the shutdown
to run again and therefore the drop routine.  As the source is dropped from the source
tree immediately, allowing for another to connect. If the 1 second cleanup on the first
triggers then the shutdown can end up removing the second from the tree as it matches
the name even though it is still running. If this continues then a third attempt can get
established and then the stats handles become shared and on terminates, either the second
or third instance becomes invalid and faults.

So add a flag to say whether we are actually reserved and only drop the source from the
tree if we are reserved.  This allows the shutdown to still trigger but not drop the second
source.  This is a rare case and problem only occurs if a worker is getting stalled.