This is something I haven't tried before so I'm kinda thinking out loud here.
1- For sure, you can give everyone that needs to make an outside call independent account codes that will change their COR and COS. Then internally they will use a COS that doesn't drop the call. When they need to dial externally they would enter their account code and then they would dial out. External calls would be restricted unless they entered their account code.
2- I'm not sure here but you may be able to change the COS of the trunk to drop the call rather than the phones COS. That way when dialing internally the call wouldn't drop.
Ralph