With the failed write to MSR 0x38f, it is probably as good as vPMC not enabled in the VM. My guess is that the rdmsr 0x38f would fail (this is what happened when vPMC is unchecked in an Ubuntu 22.04 VM in version 16.2.5) or even if it reads probably returns 0x0.
As it is writing 0x0001000f000000ff and failing, the 0xff at bits 0-7 means that the code that attempts to do so, determined that hyperthreading is disabled.
Just for comparison, on an i7-8700K Ubuntu 22.04 host running version 16.2.5 with an Ubuntu 22.04 VM,
rdmsr 0x38f
returns 70000000f (on both host and guest) with hyperthreading enabled on host
returns 7000000ff (on both host and guest) with hyperthreading disabled on host
cpuid returns in the guest VM
number of counters per logical processor = 0x4 (4) with hyperthreading enabled on host
number of counters per logical processor = 0x8 (8) with hyperthreading disabled on host
The results are independent on whether the ht flag is present or not in /proc/cpuinfo in the guest VM. It seems PMC code is using something different from /proc/cpuinfo code to determine whether to show the ht flag or not.
I guess if you run the rdmsr -all 0x38f on a Linux host, the p-cores would show 0x0f on bits 0-7 as there is HT by default while the e-cores would show 0xff for bits 0-7 as e-cores don't have HT at all.
Considering attempt to write MSR 0x38f is assuming HT is off (maybe because it determined this from the e-core instead of p-core), perhaps try flipping affinity to the e-core instead of p-core. But it is possible that setting affinity to e-core the VM would become slow and unusable. I don't have access to a machine with e-core/p-core so I can't say from direct experience but some posts here seem to suggest running VMs on e-cores makes it slow/unusable.
Alternative, is to disable hyperthreading in the p-cores from the host UEFI (if possible) so as to make both p-cores and e-cores run without hyperthreading and presumably writing MSR 0x38f with 8 counters will succeed instead of crashing.
As to whether it is a bug of the Linux kernel/PMC or VMware, it is hard to say but I would lean towards kernel code being at fault considering that these would likely run fine on VMs with host CPUs without e-core/p-core differences and it is the Linux code crashing and not VMware. But that doesn't explain why it run fine on the bare metal i7-13700H.