If you are unable to sort the data in the source, yes, you would have to sort the data in the data flow before you can use the merge join transformation.
Stepping outside the problem a bit, do you have to use the merge join transformation? Could you instead load the data (with the sort keys you're generating) to staging tables, and then join those tables together in a SQL statement? If you can do that, you'll avoid the expensive sort in the data flow.
Tim Mitchell, Microsoft Data Platform MVP
Data Warehouse and ETL Consultant
TimMitchell.net | @Tim_Mitchell | Tyleris.com
ETL Best Practices