Fix a typo, cleanup some code

The typo was that pin6_addr was declared as a sockaddr_in.

The cleanup is because we don't need to separate pin_addr/pin6_addr at
all. recvfrom can take a pointer to a sockaddr_in6 and will tell us if
it needed less space for a sockaddr_in. We access the result through a
pointer anyway.