It amuses me that you find very important for the argument that Alexander Viro considers that something is copyrightable or not. Instead you chose to obviate something that's much more interesting: his intention. Were he and the rest of kernel developers trying to prevent others from using those constants and structures in non-GPL code? I cannot speak for them, but my guess is that they were not.
Additionally, it's clear that, even in the case constants and structs were copyrightable, there's the special exception about the syscall interface. There's no such exception for kernel modules.