Separate sockets for send and recv

I have not needed to do this no.

The choice is yours but generally a single channels traffic is unlikely to cause an issues.

Depends how your thread blocks on read/write really.
You might find $language or $library sets up different internal threads so you don’t need to consider this.