Incremental extract strategy using SSIS and CDC
This appears to be your stumbling block in relation to most of the demos of SSIS CDC:


  My current extract consists of queries that join multiple tables
  together and then feeds that into the transform and load. Changes
  could happen in any of those tables, not just one.


As such you're on the right track with your first proposed option. For your join issues - it seems that you either have data that changes in tandem or a data set that shouldn't implement CDC. You should probably reduce the number of CDC tables and do a full load from others. At the least you could come up with a custom incremental that makes sense for your JOIN requirements while also reducing your data set size. Something like:

SELECT *
FROM InfoTable
WHERE Date &gt;= '01-01-2016'


The typical pattern for data warehouse ETL is to move table by table from source to a Staging database, which replicates the table structure of the source systems nearly 1 to 1 (only for tables you actually use and skip things like IDENTITY which will fail your inserts/transfer). Following this pattern should solve at least part of the CDC issue.

From Staging to DataWarehouse you should have your joins, business logic, clean-up, etc. in the ETL. One of the benefits of this pattern, beside simplifying incremental source system pulls, is the reduced load on LoB/OLTP systems. You get in and out from the source system as fast as possible and leave the majority of the ETL burden on the SSIS/DW server(s).

You could setup a variety of incremental load patterns on all your tables. The importance of moving ETL logic/resource use out of source systems becomes even more important if you're running that frequently. If you're trying to meet an hour load window there may be other options beside just incremental loads... even if your time is consumed by data transfer (e.g. network settings).