Solange die Inhalte des MemoryStream nur innerhalb deines eigenen Programms verwendet werden und nicht kompatibel zu anderen Programmen bleiben müssen, kannst du das Speicherformat ja beliebig ändern. Zum einen kannst du dann die Begrenzung der String-Längen aufheben und auch
Unicode implementieren. Dazu müsstest du aber die Record-Strukturen vom Speicherformat entkoppeln.
Als erstes würde ich die Records mit Methoden zum streamen erweitern (LoadFromStream, SaveToStream), die zunächst lediglich die direkten Read- und Write-Zugriffe kapseln. Wenn dann nirgendwo mehr das Speicherlayout der Records vorausgesetzt ist, kannst du die Records schrittweise umbauen und die Stream-Methoden entsprechend anpassen.
Wie gesagt, das geht dann nicht (so einfach), wenn der Stream-Inhalt außerhalb verwendet wird - und sei es, daß du mit dem alten Format gespeicherte Dateien einliest.