I found the problem; The issue was to do with the fact that i was not properly initialising my SDRAM or properly organising my heap usage.
When creating a simple LED Blink application my memory usage was within the small internal SRAM size, and the system heap was allocated to that region so SRAM was not required. However, my larger application required larger amounts of memory but I had not organise the threads, semaphores etc explicitly into L3 memory via a custom heap. Once I had created a custom heap within SDRAM and configured my threads, semaphores and so on to use it, the application would run as a .ldr from flash.
I was then getting some intermittent and inconsistent kernel panics and errors in the VDSP++ debugger. Although there's no way to detect a stack overflow in the strict sense, looking at the VDK Status window on each crash I could see some strange output on some of the threads (the data reported would be corrupt/illegible and the stack range would be in an incorrect/illegal region). Increasing the stack sizes of the threads near to them (i.e. those using the adjacent stack address ranges) made these issues go away. I don't know, but I believe this may have been to do with the need for ISR's to make use of the currently active stack, hence the inconsistency of the problem. I had to run my application several times to pick up all the places where this was happening but I got them all ironed out eventuall.
After doing all this the application ran fine over 3-4 days without any errors.
Hope this is useful to someone!
Cheers,
Adam