Controlling DC motors and servos with a single pca9685
The PCA9685 is non ideal for driving servos as it provides very low resolution apart from the fixed output frame rate. But given the low price of the board you could easily run two of them (it supports multiple I2C addresses) and use a different frame rate for each board. 

The frame rate for your servo signal on the SG90 should work out to at least 100Hz, and I've used the PCA9685 board from Adafruit to drive lots of servos and LEDs, and it's easy to program. There are of course manufacturer variations in the servos so YMMV. If you want to run the servo frame rate at 300Hz you will typically have to move to a Digital Servo, which most do to achieve faster command response. The MCU used in the digital servos will typically work with any frame rate from about 40Hz through to 300Hz. 300Hz would however seem to be low for your DC motor PWM drive requirements, so again I think two boards would be the best solution.

The biggest problem with the PCA9685 is the low resolution when driving a servo. It has a 4096 count span and if you are running your servos at 50Hz (20mS) that means your pulse range of 1 - 2 ms only has a count of 204 (less than 8 bit resolution), giving you about 100 point resolution above and below the 1.5ms center zero point. Some servos will work from 0.5ms through 2.5ms (and certainly most digital ones can be tuned for this) but this still only gives you a 406 point count which is less than 9 bit resolution.