Мне не кажется, что вы можете сэкономить здесь много времени, обновление субмодуля для уже проверенного коммита - это довольно быстрый запрет для меня, но вы можете попробовать:
git checkout oldercommit
git submodule foreach -q '
now=`git -C $toplevel rev-parse :$sm_path`
test $now = `git rev-parse @` || git checkout $now
'
работает заметно быстрее для вас.