When I was working on the problem of ties for DB3, trying to get a bot to read and write to any memory location of a bot attached to it, I arrived at something that's very similar. There's two tricks here:
1. You're using 50 memory locations. Just up it to 1000, and suddenly you can use another connected bot like an extension of yourself. Like a dummy puppet to do with as you please.
2. While you do need to use a buffer in the tie (so that the order that bots execute their DNA doesn't matter), you don't need to actually store a copy of the other bot's memory in the tie. All you're interested in is what the bot's memory looked like at the beginning of the cycle, and any changes you've made to it during this cycle.
Taking the two together, I came up with a system where bots interface with memory through a "filter". Doesn't matter if it's the bot's personal memory or an attached bot. This filter ordinarily reads the bot's "base" memory, what it's memory looked like at the beginning of the cycle. But if a bot stores a value to a memory location, it's stored in the filter instead of the "base" memory.
After all the bots have had a chance to execute, the filters are "applied" to the base memory. Each bot's DNA goes first, and then any connected bots' filters are applied (probably averaging any conflicting stores). Pretty sure I have a working version for it right now in the DNA module I wrote. The funny part is that, even if the other bot is lame, deaf, and dumb, and alzheimic, you can still use the funny way the filters work as a large array of temporary memory to manipulate.
Something like this could be implemented in the current version. It would mean alot of code rewrites. Would be a major overhaul (one of the reasons I started DB3 fresh instead of directly porting the current version), but if Eric's willing I think it could be done.