Again, I don't know what version of FreePBX you are using but a queue sounds like it's perfect for the job:
- Announcement played when you join
- Announcement played during at whatever interval you want
- Announcement played on fail (i.e., all "agents" or in your case extensions are busy)
- Capacity option to decide how many callers can be waiting for someone to pick up
- Far too many things to list here
So, again if it were me - and it is because I do something VERY similar at my house:
- Inbound route to the queue with a timeout of 70 seconds that either rings all extensions or goes through the list
- If anyone in the ring group picks up then it's out of the queue
- IVR kicks in after 70 seconds to give the caller options
Honestly I don't see how a queue is NOT perfect for what you are asking. So far I haven't seen anything in your request that would disqualify a queue as an option, but several that disqualify a ring group as an option. You could, if you wanted, use your ring group inside of a queue to give you all the options you think only a group will give you while also giving you the additional options of the queue.