I've finally managed to get this fixed, thanks to a kind soul found on the Internet. I basically got schooled(again!) on layer 2 traffic and having an extra pair of eyes go through the firewall config, I found out what the problem was. I was basically trying to shoehorn VLAN traffic through the switch and causing a loop(even with loop prevention turned off). However, this was not affecting my regular traffic which made me continue to troubleshoot and assume that my configuration was correct.
Considering my requirement has been that VMs talk to each and gets update over the internet and nothing outside of these VLANs, I added another interface to pfsense(trunk port) and in pfsense, changed the VLANs to be going through the new interface, rather than still pushing it through the physical LAN which I was trying to do. I now get DHCP AND the machines are able to reach out to the internet.
Once I added the trunk network interface as an additional NIC, it showed up as a 3rd interface on pfsense which showed as vmx2
ef00ec88-22ea-4b6e-a5cb-a5cd24c95b2e-image.png
I used the third NIC to pass my VLAN traffic
97e9f5c0-4b2a-4482-8320-999d1e4bbdaf-image.png
Earlier, I had configured VLAN to be going vmx1, by letting the traffic go out through the LAN/Trust interface and then trying to get it back through the same port (since I didn't have another NIC free on ESXi). Now, all my VMs are getting the correct IP address range