Fun project. I was inspired to indulge my asm/minimalism fetish with a slightly different approach. Rather than the shellcode as data, copy an assembler routine to the child process. This yields some minor advantages...
Just 40 bytes of machine-code.
Typical function prolog code isn't needed as there's nothing to preserve.
Typical function epilog code isn't needed as ExitProcess never returns.
Pointer-to-the-data patching isn't required because the code itself determines where in memory the _SELFDEL data is.