I think you can use Document Analyzer V3.0 Update Available to check if all the dimensions are used at layout level and drop the unused fields.
After that you have to join() and applymap() your tables (where possible).
Yes, easier said than done.
Check also this link and the attached files.
If you want to make some cleanings so for the start it can be:
1. Order this chaos! Sort tables by meanings and theme, by links and key fields;
2. Join all that can be joined without changing on cheksum;
3. There can be some trash tables without any help in front-end (and they can be dropped in the script).
As the finish model it should be a fact table with multiple dictionaries.