To be perfectly honest, it depends how active the CPUs are within those guest VMs.
You are right to over-commit CPU cores though. ESXi handles this very well.
What I would do for a BASIC answer is add up all the "GHz" for the VMs you want to run, so: 16 VMs x 2 cores at 2.4GHz each = 76.8GHz
Then
Add up the GHz available on the ESXi server(s) 2x 4x 2.4GHz = 19.2GHz
So you would have 19.2GHz available on the ESXi host but you would want to run 76.8GHz on that ESXi hosts.
A rough calculation means that on average, VMs would need to be running at less than 25% CPU for this to work without contention 76.8GHz / (100/25) = 19.2 GHz
This is VERY approximate but should give you an idea of what's possible.
Hope this help.