A wildcard subdomain is definitely going to be more performant if you have that many subdomains. It means you would only have a single certificate loaded in memory.
Caddy has a default limit of 10,000 certificate slots for its in-memory certificate cache, so if you were to run with the defaults, you would continually have certificates evicted from cache to make room for the new ones loaded from the configured storage. Not ideal.
There’s no exact science for this. You’ll need to conduct your own tests to determine this.
Your post is very light on details, so it’s hard to really give any additional recommendations. If you could better explain what problems you’re trying to solve, we can probably give you more guidance.
Make sure you’ve read this page in the docs to understand the options Caddy provides:
Yes, the capacity can be modified with the tls.cache.capacity option (JSON config only currently, not available via the Caddyfile yet, but it would be trivial to add).
But like I said before, wildcard certificates would most definitely be more performant if all of the domains you want to manage are subdomains of domains you control.