Drive 10 piezo buzzer from micro controler simultaneously and independently
First: For audio frequencies, you could just check whether it's time to turn on/off by checking the microsecond clock for each of the ten pins, in a tight loop. There's enough "oomph" in the Teensy that the signal will be reasonably clean enough compared to the shitty frequency response of most piezo elements, even if you do some limited communications. (Especially if you split up any protocol parsing to be one byte per iteration through the loop.)

Second: Typically you drive a Piezo with a 1K resistor across the terminals, and tie one terminal to your positive supply, and the second terminal to a small signal transistor. A BS170 / 2N7001 would be fine, and is easy to drive from the Teensy's pins. Do not drive the piezo directly from the MCU, because if something vibrates the piezo, it will generate a voltage, which may be high enough to destroy the MCU pins! (The BS170 can take up to 60V, by comparison.)

Third: Even the PWM controllers are sensitive to overvolt, so vibration/knocking on the piezo would destroy them, too. Thus, even if you use a PWM controller (a PCA9685 would totally work to generate 10 parallel PWMs) you should buffer the output as described above.

Here's a typical driving circuit. Adjust it for whatever your driving voltage and current is -- could be up to 20V for your particular part, and it takes 8 mA current.