I.e. am I able to read from and write to the same socket using two different threads, given that I'm doing all communication in the form of datagrams?
UDP IS in fact fully duplex.
You can have a server listening from as well as writing to the same socket