REAL billsec (after agent connect)

Override the Queue Transfer Context, adding what you need:
Context for For Queue Transfer - FreePBX / Development - FreePBX Community Forums

Or

Make a new feature code for staff to use and map accordingly:
How I set up my feature codes - Asterisk / Asterisk Endpoints - Asterisk Community

Another thought, If the PBX is not anchoring the media, you could use a REFERR command to transfer the call off box, which would effectively end the call as soon as the transfer occurs. IF the PBX has to be the anchor, this would not work and drop the caller.

To each their own, but I would set a variable called QuStart and populate it with ${EPOCH}, then add to the transfer context a SetCDRUserField(${EPOCH}-${QuStart}). The CDR should give you the seconds of the queue call in the usr field.