The MultiLayer OpenEXR file format is one that was designed (by Industrial Light & Magic, with a little subsequent help from the Blender Foundation(!)) specifically as “a data-file format for 3D rendering pipelines.”
OpenEXR stores “collections of data as floating-point numbers.” Then, MultiLayer enhances that idea to store “multiple named layers of” data in a single file. (The Blender Foundation originally came up with the “MultiLayer” enhancement, and made it freely available to the graphics community.)
Anyway … “PNG” is just a graphics format. The total extent of its knowledge … of its intended scope … is to store a 4-tuple for each point in an (X,Y) grid: (R, G, B, A), where the value of all four variables is in the clipped-to range [0.0…1.0]. Which is “all well-and-good for PNG, but not sufficient for your purposes (or ILM’s).”
Hence: MultiLayer OpenEXR. All of the RenderLayers, and all of the selected channels of data within each layer, will be present in that file … and any floating-point value (“blacker than black,” “whiter than white”) is equally welcome. The files, of course, will be big, but who cares. (Lossless compression is applied, but “file size” is not a primary concern. No data will be lost or compromised.) The data doesn’t pretend to be “an image.” It is: a numeric data-set. Emitted by a computer, frame by frame by frame, meant for a computer to consume. “Perfect.”
You should structure every stage of your processing pipeline around this format. (In the very final, “answer print” stage, you might just use OpenEXR … but I wouldn’t.) “The finished movie,” therefore, will consist of yet-another directory of these files.
Then, to generate the “deliverables,” in (say) QuickTime or .MOV or what-have-you, you use another set of blend-files whose sole purpose is to read “the finished movie” as input, and to generate “a deliverable” (in whatever format is requested) as output. Kindly notice that this is the only point in time at which anything has been “compressed” or “mapped” or “thrown away,” and that by this point in the pipeline it no longer matters.