5k would be fine, 50k would not, with current hardware and JVM, based on my experience. The pain point again in my experience, is not any of the issues cited in that presentation, but rather that GC gets bound up in a wad eventually when you have large (>10k) numbers of threads in a JVM (and any reasonably complex application). This is because the object graph becomes highly interconnected through the Thread and associated TLS objects. YMMV of course. Definitely agree that the "async is fast" myth needs debunking, though.
Do you think 10 JVMs running 5k threads each would perform better? Assuming you have enough memory for such a setup...
Probably, but then you have to manage 10x the JVMs which is no picnic. Pick your poison. Better to re-write to not use zillions of threads.