See Jeff Weisberg's post to nanog yesterday.
It can be solved in tcp_input.c, even for tens of thousands
of syn packets/second. Just keep no state until the syn/ack
comes back (and with a valid hash matching one you would have
supplied as an initial seq number).
Avi