I've ended up rewriting some part of MFC (the OLE Server / Client data transfer code) , using a memory-usage-oriented approach.
The resulting code is extremely memory-efficient, data is never duplicated between the server and the client (however because of shared memory via CreateFileMapping the task manager mem usage appears to be double the data size, even if it isn't).
Well it could have been further more optimized using data compression but I needed to stop at some point.