Если вас не устраивает MD5, то вы можете попробовать SHA-256 или SHA-512 в случае, если речь идёт о какой-то параное.
Использовать SHA + MD5 не следует. Скрещивать два криптографических алгоритма вообще не рекомендуется, так как безопасность может не вырасти, а наоборот снизиться. Поэтому просто выберите себе хороший алгоритм и пользуйтесь.
А ещё вы можете попробовать зашифровать все пароли каким-нибудь ключём, спрятанным в надёжном месте.
Если же речь идёт о каком-то действительно параноидальном случае, то, как уже заметили ранее здесь, то в действительности есть куча разных схем аутентификации (например, паттерн Auth Token) и они не обязывают вас использовать именно хэш-функцию.
И вот ещё: сессии тречатся чаще всего либо через куки и иногда через IP+куки. Таким образом, от кражи куков защититься нельзя никак кроме как выдавать на каждый запрос новые куки (генерировать новый сессионный ключ)
Совсем другое дело - хранение в БД. Если вы боитесь, что кто-то украдёт саму базу.. то это совсем другая задача. Стоит разделить эти две проблемы.
UPD
И помните, что один из принципов криптостойкости гласит, что секретность алгоритма или каких-то начальных данных (например, соль) не гарантируют безопасность.