hone: fix use-after-free in packet handling code.

For outbound packets, the underlying sock struct can be freed at any time,
so we need to hold it for the duration of our access and put it afterwards.

For inbound packets, we don't have to worry about the sock being freed out
from under us, but the access still seemed racy (I was getting occasional
slab errors accessing sk_protinfo under load on a debug kernel), so this
minimizes the race window.