No amount of transistors can make shared memory monoliths fast on multicore systems, because the problem is in architecture unfriendly to such systems, not in hardware. Monoliths can be fast if they drop shared memory and use actor model, not atomics and mutexes and programming with shared memory. But then it would no longer make them monoliths. Basically what makes monoliths slow on multicore systems is also the thing that makes them not microkernels. I mean if you split everything into actors, why even run all of them in kernel? Group them into isolated OS processes.
Synchronisation between two cores is fastest with hardware support, so shared memory with cache coherence protocol.
Cache coherence protocol are all designed to keep everybody in sync. So if you scale to thousands of cores, you better sync selectively and application specific. Thus it makes sense to use message passing (actor model).
It is unclear where the it makes sense to switch. Somewhere between 2 and 1000.
Hybrids are also an option. Supercomputers often use OpenMP (shared memory) and MPI (message passing) in a two level way.