One more update on the bug, I've increased speed and have found out that after fast G0 approach, laser is turned on with a small delay, causing gaps in contours. In version 2113 laser in the same scenario was turned on at the end of G0 move leaving extra tail, in 2116 it is just the opposite. This is more visible when G0 approach vector has close angle to the next G1 movement and there is no sharp change in direction.
So far I have found a workaround to fix the issue - every G0 move should have G4 P5 added before and after, which probably makes optimizer to stop doing weird things. Seems that P value does not matter, just the presence of the command.