TL;DR: If you use IPsec: try disabling "IPsec passthrough", on the NAT router in your remote office. I.e. the box that the VPN clients are behind, and which owns the single public IP.
I think that's your real problem. Switching to pfsense with the exact same VPN protocol wouldn't help it.
You should say which VPN protocol you're using at the moment (IPsec?). I assume you're using all software built into Windows, or you'd have mentioned it...
You're right to flag "one public IP" as an issue. NAPT (NAT) needs to handle each IP protocol being used. If the VPN protocol runs directly over IP, it will be subject to limitations of the NAPT box at the remote office. Limitations like a maximum of one connection at any time - I'm sure I've seen this in home routers.
Some Passthroughs are limited to one VPN tunnel at a time; other implementations use fields like IPsec SPI to multiplex several tunnels through one NAT-ing device. VPN Passthrough isn't a standard and behavior varies by product. Cite - quote is not really paywalled - just scroll down.
In that case you want to run your VPN protocol over UDP/IP, instead of directly over IP. This is often labelled NAT-T, for "NAT Traversal". (And unlike VPN passthrough it's a standard).
To force NAT-T, try configuring your NAPT box to block VPN over IP. In other words, disable the "VPN passthrough" feature. VPN clients will then have to use NAT-T. Windows IPsec client and server 2003 should support this out of the box. As per the client link above, you may need to ensure the the VPN server has a public IP address of its own. ("NAT-T ... has been disabled by default for the case when the VPN server is also behind a NAT device").
Alternatively replace your NAT box, with one that does support passthrough of your VPN protocol with as many connections as you need :).
The same problem would apply to PPTP, but worse because you can't run it over UDP. (Please don't use PPTP, it's not secure).