Following up, I was able to resolve my issue by switching the guest to FreeBSD 12. With this guest, a basic survival world created with default settings idles at ~6% CPU (observed from the host, not the guest) with no players logged in. The guest was created with virt-manager default settings, other than the amount of RAM and cores.
Also experiencing the issue, Ubuntu 18.04 on both host and guest, hypervisor is KVM. MC 1.15.2 running on openjdk-8-jre-headless.
Correct, the host was unchanged, Ubuntu 18.04.
Side note: I also tried an OpenBSD guest, but I found that even after fiddling with libvirt's clock settings I couldn't get the idle CPU usage (without Minecraft running, observed from the host) much below 20%, so I gave up on it.