Fix hash_function().

The hashing function that tinc uses is currently broken as it only looks
at the first 4 bytes of data.

This leads to interesting bugs, like the node UDP address cache being
subtly broken because two addresses with the same protocol and port (but
not the same IP address) will override each other. This is because
the first four bytes of sockaddr_in contains the IP protocol and port,
while the IP address itself is contained in the four remaining bytes
that are never used when the hash is computed.
Add a TODO to handle collisions in the UDP address cache.

The UDP address only has 256 buckets and will blissfully ignore
collisions. As a result, it is possible to get in situations (especially
when talking to lots of nodes at the same time) where we would see
excessive cache thrashing.
Add a TODO to stop doing rate-throttling on UDP address cache misses.

Currently, if we get more than one UDP address cache miss per second, we
start dropping packets. This is likely to result in unacceptable packet
loss when talking to lots of nodes.