Similar to #20575 for prewarm workers, this moves proof worker spawning
into a single spawn_blocking task. Previously, ProofWorkerHandle::new()
would call spawn_blocking once per worker (~50 calls on main thread).
Now we spawn a single task that spawns all workers inside it, reducing
main thread spawn_blocking calls from ~50 to 1. The handle returns
immediately with channels ready - workers process jobs as they come online.