Task distributor. Spawns a background task that distributes tasks to workers
according to the chosen strategy, handles cooldowns, and sends end/break signals.
Finalize a measurement once task distribution is done: send the end-of-measurement
instruction to all workers (marking them finished), then wait for every worker to
report back before the distributor task exits.
Build a Task from a raw address and the current distribution metadata.
The worker sends the probe nprobes times (spaced by the measurement’s probe interval).
Resolve a live target’s worker_ids into a worker selection:
empty selects any worker (round-robin), [ALL_WORKERS] selects all probing
workers, and anything else is an explicit set of worker IDs (sorted,
deduplicated, and filtered to probing workers).