factor out struct tcphdr

that struct is unportable (neither C nor POSIX) and depends on
glibc specific hacks to get the right definition anyway,
so it's better to provide our own copy.
fixes build on musl libc.