The only people who need to be at longer meetings are those who can affect its outcome. Those who can only act on a decision have no need to attend.
Another idea, akin to IBM's, is the Swiss railways approach. Set very specific times and durations for meetings. Say they will begin at 10.12am and finish at 10.26am. Such specificity might bring people in on time and keep things moving on a tight schedule, leaving no time for the dreaded "any other business". Then break the meeting down into even smaller blocks, 90 seconds on this, five minutes on that, so nothing gets missed and people understand they cannot gas on. Don't allow diversions from the agenda.