If you can model everything as tasks, FogBugz has a feature I used to help myself complete grad school: https://fogbugz.com/evidence-based-scheduling/, which gives you a probability distribution over finishing times. It was incredibly useful! You might want to start the free trial to see if they still have the "if you have too few users, you can use it for free until you get big enough" deal they used to have.
As of (X years ago) it was missing appointment scheduling.
My most recent solution for individual scheduling is Skedpal. It does not have the overshoot estimation you want. Instead, it will flag tasks that are risky because they have little flexibility for rescheduling. This serves the purpose of deciding whether you can or can't schedule something: add it to your list (or to your calendar), hit update schedule, and if something goes to your hotlist or gets marked as red/yellow for flexibility, say no. You can include overshoot by giving yourself lots of slack (and % slack is a parameter to Skedpal's scheduling algorithm). This makes a constraint that binds you for planning when real constraints don't yet bind you. For sufficiently important stuff, you can turn off the slack to schedule that one item (and know that you're going to pay hell doing it.)
To schedule my team, I do a manual poor man's version of FogBugz. Someday I'll turn it into a web app. (I've had this in my head for 2+ years, so don't hold your breath.)