You can solve this problem by editing the schedules of the buses. For example you change the order of f. e. two stops or even not stop at a stop where only few passengers are generated. Some simple changes like this help avoiding those lined up buses.
The bus stays on the schedule if you just select a different station for its next stop from it's existing schedule. If it's going A-B-C-D-E-D-C-B-A and there is a line of buses going from B-C, click the last bus, schedule and click stop 'C' going the other way - ie, from D-C. The bus stays on its schedule but will go to C, turn round and come back, leaving the line of buses. This is only a short-term solution, though - after a while there will be a single line of buses with the back ones doing nothing, and for the same reasons as buses arrive together in real-life.
Having said that, I agree completely that it's irritating. I think micro-management is the only answer; and where possible, have lots of simple lines that inter-connect without overlapping rather than a small number of long and complex lines.
IMHO it comes down to network design; keep it simple - and design from the start for expansion.
And you never actually get it right. Simutrans takes you by surprise constantly - it's wonderful!