code cleanup

fix leftovers/relics of past experiments:
* reinject the correct work in the queue
* tag->name (less code, more idiomatic)
* actually start the new workers when replacing rogues
add simple test driver

and use name instead of (redundant) tag.
add logging
move worker initialization inside the watcher
extract watcher helper methods
move the stuck detection inside the watcher
extract the time-tracker code
more chatty verification