We've implemented a code cache allocation scheme to this effect in recent versions of Zing. Zing's code cache was similarly naive and since Zing has been tiered compiling for a while now we started at a similar point to what you describe.
The hypothesis (supported by some evidence) was that in sufficiently large compiled code workloads, with sufficiently numerous hot methods (one of those flat profiles where the list of methods taking > 1% cycles is long), and given long enough for late compiles to kick in, you can end up with a dispersed set of code blobs in you code cache. Ignoring the risk of code cache exhaustion, the cost we were seeing for some workloads was in iTLB misses.
The scheme we ended up with is different than JEP 197, we still have one code heap and the segmentation is internal and follows a pretty simple scheme, but it seems to help :)
The change improved some workloads (client code, finance application) by up to 4%, the impact varied by CPU. As these things go, a modest win.
Relocating observed hot paths together is complex and as Aleksey points out, if they are very strongly correlated inlining already helps this case. I can imagine a workload where it would help, but I doubt it justifies the work.
So, your intuition was to a large extent correct, and vendors are actively pursuing it with some solutions already in the field and some around the corner. At least for Zing, for certain real world workloads we saw a measurable positive effect, and I expect the OpenJDK solution will deliver similarly in these workloads.
A further, and more significant boost, was achieved by allocating larger code cache pages. This is internal to Zing and does not require OS configuration. Increasing the page size to 2M improved certain workloads by more than 10% (large number of compilation units + memory pressure). A similar improvement should be possible on OpenJDK by enabling -XX:+UseLargePages, I believe Sergey Kuksenko describes such a case in one of his talks. I've not used this option myself so cannot comment on it's suitability.
Both optimizations are default for latest Zing versions.
Hope this helps,
Nitsan