Why don't you just call the undetoured address of the send method? DetourFunction returns the address of the method which has been detoured, calling via this address will detour the detour(lol, sounds weird..). But if that isn't possible with DetourFunction(And it is), you can write your own DetourMethod. Research of the calling convention and x86 instruction set.
As far as local communication goes. You should NOT be writing to another processes memory. It's better to use a memory-mapped file, and a mutex objects. Where read\write access to the file is only allowed when the mutex object is locked by the thread performing the io operations on the file. This way, you can avoid collision of read during writes. You'll also need to create your own messaging protocol, or use an existing one. I wrote a C++ class a while ago that performed token parseing, which makes processing a file, or string fairly easy. I can post it here if you'd like.