You can only control two servos independently with the Pi's hardware PWM.
GPIO 12/18 share a channel. GPIO 13/19 share a channel.
The same settings apply to GPIO which share a channel.
E.g. If servo1 is on GPIO12 and servo2 on GPIO18 they will get the same signal (same frequency, same pulsewidth).
pigpio supports the hardware PWM features of the Pi. So you could control two servos with hardware PWM.
pigpio C hardware PWM.
pigpio also supports hardware timed PWM on all GPIO. This is suitable for servos. It is not as flexible as fully hardware PWM but is pretty much the same as using a servo HAT with a PCA9685 PWM chip.
pigpio C hardware timed servo PWM