We ran into this same issue some years back. I did do as you suggest and take the inboud flat record and convert it into an HL7 and sent it to 4 seperate process. This improved performance greatly. It worked well the problem came when we upgrade the source ADT system and the maintenance of that translations.
I now do not have the middle hl7 type message and go stright to the destination system from the flat record. In looking back the going to the generic HL7 middle solution really did not buy me that much but breaking out to more process did a great deal.