fix host retention: dormant hosts stop their thread, not just relabel
the previous change kept dormant subscriber threads running forever,
meaning thread count could only go up. dormant now correctly stops
the worker thread (freeing resources) while preserving the DB row
for discovery to re-activate later. reconciliation loop queries only
active hosts — dormant hosts wait for requestCrawl.
separated "don't forget the host" (DB row persists) from "don't stop
the thread" (thread exits on dormancy). removed unused
listReconnectableHosts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>