Solution1: We had a similar problem. We just simply duplicated the classes and added the required functionality (Note: we wrote other informations too into the brep files)
Solution2: I think if you write to / read from a string stream instead of filestream, with a simple wrapper class the desired functionality can be added. (As far as I remeber the brep writer accepts streams too instead of a filename. We had some problems under Visual Studio b/c of the linking of the std (iostream.h vs. iostream.h) or something like that. - The recompilation of OC solved the problem. )
Solution 3: create a compound of the objects and write them out as a single object. When reading, use a simple TopExp_Iterator(?) to divide up the object.