That's correct, only the next task is processed by a call.
Well problem solved now, knocked up a short PHP script to run through the scheduled task database and call cron.php for those which should have run. Just need to pop this as a cronjob on my host and the problem has gone away.