Issues With Call Transfer Release

After migrating our database from Asterisk 1.6 to a new server running Asterisk 11 [old system on FreePBX 2.8, new system is FreePBX 12], we have run into an issue where call transfers are not released properly.

Full details of the call transfer scenario are found in a cross post on the Asterisk.org forum (we thought this issue was occurring in the AMI directly), found here.

Our issue is as follows:

In call flow (a), customer call from PSTN arrives in queue1 and answered
 by agent1 correctly.
Agent1 initiates an attended transfer by pressing # key shown in call flow (b). 
The transfer goes to queue2 and answered by Agent2. 
Agent1 hangs-up to complete call transfer. At this point, caller should be connected directly to Agent2, but "show channels" command displays Agent1 as still in the call path. This makes Agent1 show up as in-use even if it was transferred already. Only when the call between Caller and Agent2 ends will Agent1's status be free.

We have tried switching Asterisk versions from 11.15 to 11.16 and then to 1.8, and will experiment with 13.2 as a matter of course.

To reply to the user on the Asterisk forum, is there anything in the FreePBX-generated dialplan that could cause this kind of issue with channel not being released? Edit: see reply below

So we have investigated this issue further and from what we can discern it is caused by a general change in behavior of device state during attended transfers… this would have occurred sometime between the 1.6 and 11.16 releases of Asterisk.

Is there a way to create custom transfers in FreePBX?