Is that correct, or am I still mistaken?
What you need to do is make some plans, and determine your important VM's and those that are not as important. Decide how you want the CPU to work.
We never set limits (at least not at the VM level) the pools take care of this. So you don't even really need to set hard limits, just define a pool with a given amount of resource.
So you have 5 VM in a 12Ghz pool. One VM has 4 vCPU, each CPU is 3Ghz. If that VM goes nuts one day, and pegs all 4 vCPU it just means the rest of the VM's in that pool will be starved.. UNLESS you set priorities. Priorities are based on need, and when resources are low. So if you have a VM that is taking CPU, you make it a lower priority, so it doesn't affect the other VM's ability to get CPU.
You also just made a case for why adding MORE vCPU to a VM isn't helpful, because 1 vCPU VM's will suffer, and a poorly written app in a quad vCPU VM will just peg the CPU and make that VM consume all the CPU.
adding more vCPU in a VM is more likely to cause negative impact, since ALL the vCPU need to be free at the same time for the schedule to allot time to those CPU, and thus performance isn't what you expect, so 1 vCPU may actually equate to the same performance as a 4 vCPU VM due the way ESX time slices the vCPU load.
We VERY rarely assign 2 vCPU to VM's, never for windows (because testing has proved the performance doesn't increase) and no more than 2 vCPU for Linux. WE have no 3 vCPU or more VM's, and we are a software development shop.
Physical machines are vastly different from Virtual, and since you DON'T have direct access to the hardware, the SMP works much different, I would take a close look at those 4 vCPU and analyze them CLOSELY for performance to see if you are truly getting 4 vCPU out of them.
Keep in mind that ALL the hardware is virtual, so the performance benefit for vCPU NEEDS the other hardware components to be at higher levels also, otherwise those vCPU are just basically idle most of the time. Your HBA / SCSI RAID cards are SHARED by ALL the VM's on that ESX host, so IO is ALSO distributed you don't have dedicated access either, the drivers are virtual, when CPU is limited the performance from other components will ALSO be limited, so more vCPU is not necessary.
We have Oracle and SQL, and we can get good numbers regardless of additional CPU, adding more CPU doesn't improve those numbers.