The article "A Quick Review of Structured Exception Handling" says that SEH is done on the stack. It also says that vectored exception handling was added into Windows XP and wasn't in Windows 2000 (which the Xbox kernel is based on). The XboxSDK help file (which I extracted manually from the XDK setup file) corroborates this, as it only mentions SEH and not VEH. Also according to the help file, each thread maintains its own exception handlers and has its own stack space. This must be what we're breaking into.
Edit:
Also, the Xbox uses 26-bit linear memory addressing. The 64 MB of RAM fits into this exactly. Therefore, the D0 in 0xD004CD40 is probably some kind of flag, but it's not something that's simply ignored (as we found out). Memory address 0x4CD40 would probably be somewhere in the application code. I thought it was supposed to be on the stack? Are we really modifying the SEH frame? What are we missing?