Всякий раз, когда PBKDF2 используется в качестве KDF с ключом с большой энтропией, его параметр итерации может быть безопасно равен 1, что должно заметно решить проблему при небольшой работе. Это применимо, если ключ представляет собой пароль с энтропией не менее 128 бит (например, 22 символа, выбранные случайным образом из 64).
Если, с другой стороны, пароль достаточно прост, чтобы его можно было запомнить, или его удобно вводить с клавиатуры, или если он выбран пользователем, не имеющим достаточной мотивации или здравого смысла, чтобы использовать хороший пароль, тогда ему необходим какой-то способ растяжка ключей, например, PBKDF2. Однако PBKDF2 — чрезвычайно плохой метод растяжения клавиш. 10 000 итераций PBKDF2 почти прозрачны для злоумышленника, использующего ASIC, и преодолимое препятствие для того, кто использует GPU. Я бы посоветовал как можно быстрее перейти на что-то получше (с участием памяти): Argon2, scrypt, даже поменьше bcrypt, для той части, которая растягивает пароль. И даже если вы делаете это, вам нужен лучший вариант, чем делать это так часто, что это становится узким местом.
Наиболее общий метод — кэширование. Это совершенно нормально тщательно энтропия — растянуть пароль всего один раз до 128-битной псевдоэнтропии, написать это вместе с паролем (будь то в ОЗУ или где угодно, лишь бы условия доступа были не более мягкими, чем для самого пароля), затем использовать это вместо пароль без дальнейшего растяжения (только производные, которые может сделать PBKDF2).