I see. The problem is not with time.Sleep/time.After. Then problem is
that the program makes 10K blocking syscalls (probably dns
resolution). time.Sleep/time.After just produce somewhat different
scheduling of goroutines.
You need to understand what exactly syscall causes blocking, it must
be obvious from crash dump. And then bound number of goroutine
simultaneously doing that syscall.