Does the Linux kernel support multiple instances of its IP stack? where basically each NIC card in the system would belong to one of the stacks, each stack would have its own routing tables, routing daemons, and any L3 or L2 tables (arp, MAC), etc.

The closest example to the above in other operating systems is Solaris with its kernel IP instances support and zones (containers) support in user space. One physical machine can run separate IP stacks in the kernel space and make each visible only to one user space container.