Well after several hours with tcpdump I finally got it running. The issue was my DSL modem. It's a D-Link DSL-502T, I don't recommend it.
I tried using PPPoE on pfSense to authenticate as it seems some people have had success authenticating against an actual PPPoA authentication.
I had to set the modem to "half-bridge" mode as pfSense can't auth directly due to PPPoA. In this mode the modem authenticates to our ISP and puts the public IP on the ethernet port in the modem instead of setting up a LAN. For some reason, it was blocking responses, and there was no firewall our routing enabled on the modem. As a workaround, I set the Ethernet to a static IP on the modem, then put the WAN port of pfSense as the DMZ until I get a new modem. Once I did this, everything works as expected with responses routing correctly back to our ISP.
We have a significant performance boost in our routing and NAT even with Snort running. The box we turned into our Firewall is an old P4 2 GHZ with 1 GB of ram. Thanks to everyone for all the hard work put into pfSense. It's the best firewall distro I've used.