Whenever PBKDF2 is used as a KDF with a key of large entropy, it's iteration parameter can safely be 1, which should markedly improve the problem at hand with little work. That applies if the key is a password that has at least 128-bit entropy (e.g. 22 characters randomly selected among 64).
If on the other hand the password is simple enough to be memorized, or conveniently keyed-in, or chosen by a user with little motivation or insufficient judgement to use a good password, then it's needed some kind of key stretching, like PBKDF2 provides. However PBKDF2 is an extremely poor key stretching method. 10,000 PBKDF2 iteration is almost transparent for an attacker using ASICs, and a surmountable obstacle for one using GPUs. I would advise switching to something better (involving memory): Argon2, scrypt, even the lesser bcrypt, as soon as possible, for the part that stretches the password. And even if you do this, you need a better option than doing it so often that it becomes a bottleneck.
The most general method is caching. It's entirely fine to thoroughly entropy-stretch the password just once to 128-bit pseudo-entropy, write that along the password (be it in RAM or whatever, as long as the access conditions are no more lenient than for the password itself), then use that instead of the password with no further stretching (only derivations, that PBKDF2 can do).