Long answer short, "No". There is no way you can make the caller stay on the phone long enough for you to try to pick up. Just like there is no way to call someone and make them pick-up the phone. Whether you feel it is fair or not, that is just how it works. If there was a way to do the above then I would be a millionaire for sure. :)
You must have a fair number of abandoned calls for them to even worry about it though. This should all be counted against your ASR (Average Success Rate) and you are usually only penalized when you drop below a certain number. In my experience that is around 60% ASR meaning if you recieve/send 10 calls then 4 or more fail to connect/answer. The most common penalty fee I see for low ASR is one penny per attempt.
Being an inbound call center you probably never run into this, but you should also be aware of ACD (Average Call Duration). A lot of carriers will want 30-second ACD or they will start penalizing you too. If your ACD falls under 30 seconds they will then apply a 1-cent fee (for example) for EVERY call under 30-seconds. They label these calls short duration if you are looking for the verbiage in your contract.
Bottom line, if you aren't happy with your carrier, and the financials make sense, ditch the contract and fine another carrier. Since you are an inbound call center most carriers are going to love you. You are almost all guaranteed billing unlike an outbound call center. As far as avoiding the abandoned calls, and if the Mitel supports it, you can try something like playing a "Please hold, we will connect you to the next available agent" before sending the call to the IVR or reps. That's about the only-way to band-aid around the issue. But if they are immediately hanging up then you would just be transferring the problem to your ACD. If you have fairly long talk times then it shouldn't be an issue.
To know for sure you would need to see total calls taken/placed vs calls that were abandoned.