Почему hash_password() каждый раз генерирует разное значение?
hash_password создан для хеширования, для сравнения введенных данных есть другой метод. Учите мат. часть.
php.net/manual/ru/function.password-hash.php
php.net/manual/ru/function.password-verify.php
php.net/manual/ru/function.crypt.php 
При проверке будет использована та же соль.