No need to worry about this issue; I have something in place now.
Using piped streams was going to be a headache because the output stream needed to be in the main thread, meaning that the jcr:data property update run in a thread, necessitating the use of a service resolver. I didn't want to go there. I instead created an extension of FilterOutputStream over a temporary FileOutputStream, overriding the close method to do the property update there. It's inefficient, but it solves my problem. John