Согласен с обоими ответившими. Дополню, как конкретно я бы сделал.
Я бы сделал переход более наглядным, чтобы можно было очень быстро посмотреть в каком состоянии на текущий момент наш переход на новую систему.
Можно, например, для нового хеша завести новое поле в базе с дефолтным null.
Когда юзер пытается залогиниться своим паролем, смотрим, если в новом поле null, то проверяем аутентификацию по старой схеме, но генерируем новый хэш по новой схеме (password_hash), записываем его в новое поле.
А если в новом поле уже не null, то, значит, пользователь уже на новой схеме, и продолжаем аутентификацию уже с новым хэшем (password_verify).
Таким образом, имея два поля, нам будет очень легко увидеть всех, кто ещё не перешёл на новую схему. Мы сможем в дальнейшем, после окончания запланированного периода перехода, информировать таких пользователей, что они обязаны до какого-то определенного времени войти в систему, иначе им придется пройти заново процесс создания нового пароля.
После этого надо будет полностью перейти на новую схему, удалив старый код и старые хэши, чтобы не оставить ни малейшей возможности злоупотребления.
Да, и не удаляя сразу данные из старого поля, мы всегда сохраняем возможность вернуться на старую схему, если вдруг обнаружили какую-то дыру в безопасности нашего нового метода.