I'm still wondering if there's a real, feasible way to "share" a file handle across procs (forks, really)
It depends on the system you are running on. Under Linux one can share file descriptor even between processes (forks). One can open file in append mode, use buffering based on EOL character and then the system will make sure that messages from different processes are written line-by-line. That will put lines from one process between lines from another process, but won't corrupt lines.
Of course file handle is not file descriptor, so passing of "file handles" around is a little bit more work, but still is quite possible.
With multi-threaded processes things are similar. Even though there are internal mutexes (though I'm not sure here about perl), still one has to make sure that buffering is line-oriented and file descriptor is in append mode.