MySql doesn't use extra CPU
In MySQL one connection uses one CPU core.  Period.  End of discussion.
Well...

InnoDB has some background threads, for example for handling I/O, purging, pruning, etc.
MySQL 8.0.xx has a very limited number of queries for which it will spawn multiple threads.


average around 25% of its CPU,

Yeah, MySQL is very fast at performing well written, well indexed queries.  So, thousands of qps might use only a fraction of a CPU.  CPU is rarely the limiting factor in MySQL systems.  When it is, usually adding a composite index &quot;fixes&quot; it.

distributed over all cores/threads well

That's up to the OS.  Just note that each connection lives in a &quot;thread&quot; (or &quot;process&quot;) and it up to the OS to allocate CPU cores to threads.
If you are averaging 25% of one CPU, the OS rarely has a good reason to wake up the other CPU.  Now we are getting into gory details of hardware -- NUMA, affinity, etc, etc.  It may be power consumption, non-uniform memory access, etc.
Even if you get it to use both CPUs, each at about 12.5%, users may not see any improvement in latency.
Multiple threads:

May be blocked waiting on I/O -- which probably has only one way to get to disk
May be blocked on various Mutexes -- At somewhere around 64 threads, this becomes a problem.  Not much of an issue at 25.
May be blocked for transactional integrity -- effectively serializing certain types of actions; hence additional CPUs are useless.

What's the real goal??

More throughput?  Either you have not hit the limit yet, or you are I/O bound.
Lower latency?  The extra CPU, even if used, won't help much.

Either of those may be helped by improving the queries.  Turn on the slowlog; use pt-query-digest; then let's discuss the worst couple of queries.