Embedding of size in Stream
I was looking into the MemoryStream and I found this 


  Except for a MemoryStream constructed with a byte[] parameter, write operations at the end of a MemoryStream expand the MemoryStream.


on MemoryStream.Write Method

I would look around a little bit on the MSDN sites that I am going to list and see if you want to change around the code that you have so that you can maybe use the Byte[] Parameter.

MemoryStream Class

although it looks like most of those Constructors create non-resizable instances, whereas the a Memory Stream Created with out any Parameters ...


  Initializes a new instance of the MemoryStream class with an expandable capacity initialized to zero. 


so to me it looks like the BlockCopy or 2 streams methods are the only way to go.