i recheck your settings with the datasheet. i think your settings for uart0_tx also set GPIO_IPInputConnected to GPIO_IPInputConnected_Enable. If you look at what the library is doing this will set SCU->GPIOIN register to 1 for this pin. this will enable the Alternate Input1 for P3.1 which is uart2_rx.
so my guess is when using 3uarts, you initialize uart2 first then uart0, which changes the uart2_rx perpheral connection to a different pin P3.1. and it also explains why uart0 cannot work with uart2 while other combinations work.
in any case, i think it is proper not to set the GPIOIN register if the pin will be used only as output. let us know if this is any help.
Your suggestions helped me solve the problem. I disabled all the pheripheral connects for the TX pins and configured uart2 before uart0. Now all the three uarts are working fine with there Rx interrupts.