kaushal,
Overall, your problem sounds like either memory corruption or bad interrupt handling. I don't think you have a basic problem with the VIC, because if you did, then you would never get the network working in the first place since the SGDMA interrupts are routed through it as well.
Taking a step back, since you have two projects/boards and it works on one and doesn't work on the other, I think you should review the differences between those projects/boards and look for things which you might have made a mistake while doing tasks manually.
One example would be along the lines of your two separate projects have two separate SOPC/Qsys systems, and you have correctly setup EDGE triggered interrupts in one project, but still have default LEVEL triggered interrupts in the other.
Another example would be to look at the memory layout etc. Taking the simple way out on that one, if you have adequate memory, you can oversize your buffers, task stacks, etc. and confirm those changes have no effect on working vs. not-working (this will give you confidence that the problem is not memory corruption related).
Finally, you should learn how to use the debugger so that you can set breakpoints etc. in order to learn what the software is doing before/after it gets into the "broken" state. Similarly, if you suspect the issue is interrupt related, learn how to use SignalTap so you can watch the VIC before/after the broken state.