worker: refactor code around qr_task_step
The function is really complex, with (indirect) recursion on multiple places, and not well understandable/described.
There are some bugs in there, e.g.
ioreq_spawn is (seldom) called with
AF_UNSPEC family, breaking the pre-condition, but it seems kresd recovers well from those cases. (This bug seems very hard to track/explain.)