Asterisk can send REFER but there is nothing in FreePBX that uses it; you would have to write some custom dialplan. See http://the-asterisk-book.com/1.6/applikationen-transfer.html . REFER asks the provider to take over the call and it is disconnected from Asterisk. IMO this is a bad idea in most cases.
You would be unable to record the call or permit further transfers. The CDRs wouldn’t show the call duration or even whether it was answered. It wouldn’t work if the call originated with another provider.
An easy quick workaround is to use Follow Me instead of forwarding (this is usually better anyhow) and set Change External CID Configuration to Outside Calls Fixed CID Value, with Fixed CID Value set to your main company number (or other number of yours). Of course, the forwarded call won’t show the original caller’s number.
If you must use forwarding, set up a trunk with a forced Trunk CID, an Outbound Route with a prefix that specifies the new trunk, and use that prefix with your forward-to destinations.
If you want to pass the original caller’s number, get a secondary trunking provider that allows sending numbers that are not yours. Telnyx and Flowroute are IMO comparable to Twilio in reliability and support and may have the additional advantage of being a carrier in your city. VoIPInnovations (a Sangoma company) and Vitelity are also excellent but have minimum monthly commitments, so would likely be suitable only if you were switching away from Twilio. AnveoDirect and Voxbeam are IMO a step down but may make good secondary providers if you do much international calling.