Ok, here's how I got around these problems, hopefully this is useful to others who are having problems with FTP.
For my windows servers, I'm installing FileZilla FTP server, and dumping IIS. FileZilla is easy to configure a port range (vs registry hacks for IIS), and easy to configure it to use whatever IP address you want when announcing its external IP address (IIS can't even do this). Additionally, it has a setting for NOT using this external IP when talking to internal clients! So internal FTP still works.
For linux, I just added these options to my vsftpd.conf file. Most other linux FTP servers will have something similar.
pasv_address=<my_external_ip></my_external_ip>
pasv_min_port=<my_beginning_port_range></my_beginning_port_range>
pasv_max_port=<my_ending_port_range></my_ending_port_range>
Then I opened that port range on the firewall for hosts that need FTP.
Still, I am hoping the FTP stuff is working better in the next release of pfSense, then we may be able to move our other public subnet over from the Cisco box to a pfSense box.