It is easy and reliable to do this in 8bit mode for two adjacent PWM channels like PWM 2 and PWM3, or PWM 5 and PWM 6. We have two facts:
1) A write to PWMPERx is buffered, so current PWM cycle continues until the end of old PWMPERx.
2) The write to PWMCNTx register resets PWM counter (resets PWM phase to 0).
So to make phase shift of X PWM counter ticks you can
1) Reduce PWMPERx of one channel by X. So that PWMPER1 - PWMPER2 = X
2) Write in one cycle any value to PWMCNTx registers of both channels. For example for channels 2 and 3 you can do in C
PWMCNT23 = 0
3) Restore PWMPERx registers to be the same for both channels.
Steps 2 and 3 should take shorter than one PWM period, you may need to keep interrupts disabled while doing steps 2 and 3.
To make changes of duty cycle synchronous you should write to PWMDTYx registers of both channels also in one cycle. Like PMWDTY23 = duty*256 + duty.