Yeah--that's a lot of code.
My first question, is how much is used in any one installation? A lot of that code is determination for hardware platform. I'd actually like to see multiple versions of the kernel, based on the hardware it's aimed at.
Just separating 32-bit from 64-bit code would shrink it a lot. I know that it does depend on the compiler, but there's quite a bit of code in there regarding that as well.
Also, compiler optimizations and code optimization would be a huge help for shrinking the memory footprint and speed.
I’m not an expert on Linux by any means. I’m not an operating systems guy.
It does seem to me that any code that’s the product of a team tends to become quite bloated.
The object-oriented paradigm is mostly an infrastructure for managing large-group development efforts. That comes at a cost, but that cost is more than justified by the usefulness of the resulting product.