This here is better than a SSIS packages since you can use a trigger to detect your row changes, and even the values.
Try my example you can just C/P into management studio. When you update on Sample_Table you will have changes rows and which column in your table.
- So what you can do is. Keep your lookup logic in SSIS (if you want something in SSIS) - Updated the Table based on matches in lookup 
- When these updates happend your trigger will be fired and update the rows that have changed. 
- Alternative you can create your lookup in a t-sql script and do an ordinary update when custid=custid instead its just as easy. But thats up to you. 
EDITED
     -- -------------------- Setup tables and some initial data --------------------
 CREATE TABLE dbo.Sample_Table (ContactID int, Forename varchar(100), Surname varchar(100), Extn varchar(16), Email varchar(100), Age int );
 INSERT INTO Sample_Table VALUES (1,'Bob','Smith','2295','bs@example.com',24);
 INSERT INTO Sample_Table VALUES (2,'Alice','Brown','2255','ab@example.com',32);
 INSERT INTO Sample_Table VALUES (3,'Reg','Jones','2280','rj@example.com',19);
 INSERT INTO Sample_Table VALUES (4,'Mary','Doe','2216','md@example.com',28);
 INSERT INTO Sample_Table VALUES (5,'Peter','Nash','2214','pn@example.com',25);
 
 CREATE TABLE dbo.Sample_Table_Changes (ContactID int, FieldName sysname, FieldValueWas sql_variant, FieldValueIs sql_variant, modified datetime default (GETDATE()));
 
 GO
 
 -- -------------------- Create trigger --------------------
 CREATE TRIGGER TriggerName ON dbo.Sample_Table FOR DELETE, INSERT, UPDATE AS
 BEGIN
     SET NOCOUNT ON;
     --Unpivot deleted
     WITH deleted_unpvt AS (
         SELECT ContactID, FieldName, FieldValue
         FROM 
            (SELECT ContactID
                 , cast(Forename as sql_variant) Forename
                 , cast(Surname as sql_variant) Surname
                 , cast(Extn as sql_variant) Extn
                 , cast(Email as sql_variant) Email
                 , cast(Age as sql_variant) Age
            FROM deleted) p
         UNPIVOT
            (FieldValue FOR FieldName IN 
               (Forename, Surname, Extn, Email, Age)
         ) AS deleted_unpvt
     ),
     --Unpivot inserted
     inserted_unpvt AS (
         SELECT ContactID, FieldName, FieldValue
         FROM 
            (SELECT ContactID
                 , cast(Forename as sql_variant) Forename
                 , cast(Surname as sql_variant) Surname
                 , cast(Extn as sql_variant) Extn
                 , cast(Email as sql_variant) Email
                 , cast(Age as sql_variant) Age
            FROM inserted) p
         UNPIVOT
            (FieldValue FOR FieldName IN 
               (Forename, Surname, Extn, Email, Age)
         ) AS inserted_unpvt
     )
 
     --Join them together and show what's changed
     INSERT INTO Sample_Table_Changes (ContactID, FieldName, FieldValueWas, FieldValueIs)
     SELECT Coalesce (D.ContactID, I.ContactID) ContactID
         , Coalesce (D.FieldName, I.FieldName) FieldName
         , D.FieldValue as FieldValueWas
         , I.FieldValue AS FieldValueIs 
     FROM 
         deleted_unpvt d
 
             FULL OUTER JOIN 
         inserted_unpvt i
             on      D.ContactID = I.ContactID 
                 AND D.FieldName = I.FieldName
     WHERE
          D.FieldValue <> I.FieldValue --Changes
         OR (D.FieldValue IS NOT NULL AND I.FieldValue IS NULL) -- Deletions
         OR (D.FieldValue IS NULL AND I.FieldValue IS NOT NULL) -- Insertions
 END
 GO
 -- -------------------- Try some changes --------------------
 UPDATE Sample_Table SET age = age+1;
 /*UPDATE Sample_Table SET Extn = '5'+Extn where Extn Like '221_';
 
 DELETE FROM Sample_Table WHERE ContactID = 3;
 
 INSERT INTO Sample_Table VALUES (6,'Stephen','Turner','2299','st@example.com',25);
 
 UPDATE Sample_Table SET ContactID = 7 where ContactID = 4; --this will be shown as a delete and an insert
 -- -------------------- See the results --------------------
 SELECT *, SQL_VARIANT_PROPERTY(FieldValueWas, 'BaseType') FieldBaseType, SQL_VARIANT_PROPERTY(FieldValueWas, 'MaxLength') FieldMaxLength from Sample_Table_Changes;
 
 -- -------------------- Cleanup --------------------
 DROP TABLE dbo.Sample_Table; DROP TABLE dbo.Sample_Table_Changes;*/
 
 select * from dbo.sample_table_changes