Here are some options:
A. Reduce the input data by implementing some kind of CDC (at the volumes and data variability you're talking you should really consider this). What options do you have for CDC at the source (i.e. can you create triggers and logging tables? Do you have a version of SQL Server that supports native CDC?)
B. Load the input data into a staging table and use INSERT/UPDATE or MERGE to apply it to your target table
C. Load the input data into a staging table and DELETE/INSERT (based on date ranges) to apply it to your target table. This is what I generally do. Your load process should be able to run off a given date range and intelligently load only that data, delete it from the target and reload it.
IMHO, the SSIS lookup component is of no use at the data volumes you're talking.