Some fixes to bitswap + dht

This whole thing is hacky as hell. The golang net stack doesnt support setting sock opts, and conversations in the go-nuts mailing list report this approach can work (may not anymore, see the note on `.File()`). The alternative is to setup/use the socket directly, and then use `net.FileConn(fd)`