In general I am quite critical of the idea of generating 100 models.
The reason is simple: unless you just need to read the data of these 100 tables and expose them "as is", you will need to apply some business logic on them.
If you are in the first case... why do you need dbt at all?
If you are going to apply some business logic... writing the code is the least time consuming operation: if you are trying to materialize the data and save changes you need to know the primary key, if you want to combine data from multiple system you need to know the business keys and have mapping tables and some idea of how to apply master data management... writing code that you can generate is the least of the problems.
If you have a project with 100 tables that is no trivial work and, assuming that you need to use all the 100 tables, you will need to understand them and write business rules on them.
In this context the automatic model generation would save a tiny fraction of the time spent on each of the tables... so why bother?
IMO much better having something that saves you the grunt work, but you write each model so you are sure to apply the right pattern.
Also, I do prefer adding tables only when needed, using something like the dbt codegen package or, if you have a repeatable pattern that you want to use, a self written SQL query that uses the COLUMNS view from the INFORMATION_SCHEMA to provide you the table specific values that you accomodate in the template that applies the PATTERN.
A query like the following already goes a long way to give you the beef of the table so that you can change the names you do not like, and apply eventual casts or other hard business rules with minimal effort:
SELECT ', ' || COLUMN_NAME || ' as '|| COLUMN_NAME || ' -- ' || DATA_TYPE as SQL_TEXT
FROM <db>.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'XXX' and TABLE_NAME = 'YYY'
ORDER BY ORDINAL_POSITION;
And then you add one model at a time when you actually need it (YAGNI principle) without starting by "loading all tables" from some datasource.
PS You do not need to repeat the same freshness SLA definition 100 times.
You can declare it once at source system level and just override the parameter that are different for a specific table.
Start by saving complexity where it is easy ;)