After receiving IRF540N from a reputable seller I can definitely confirm that the ones I was originally using are counterfeits.
After replacing fake one with a genuine one I got Vds=85mV on the red channel. What I was not expecting though is that the genuine FET got hot after a minute or so. And then I realized that those FETs are not generating much heat themselves but rather get heated up (and quite a lot) from the breadboard and the wires (Connor Wolf mentioned it). Short wires connecting FET's source to GND are screaming hot when this is in full ON state. Moving FETs off the breadboard confirmed that the source of the heat was the breadboard/wires. Fake one was getting hot but I could actually cool it down just by touching it. Genuine one was somewhere between the room temperature and luke warm. Btw. measuring Vds directly on FET pins vs measuring it 1cm away on the breadboard made around 200mV difference (85mV on pins, 300mV on breadboard).
Here are some pictures, fake on the left, genuine on the right and manufacturer's part marking on the bottom:
Although there are more IRF package markings possible as shown in this document I could not find any similar to the fake one (which only supports that this is a counterfeit). Also the cutouts on the top of the back plate are rectangular vs round on the genuine and in the spec.
Thank you guys for all your comments! The circuit now works as expected (PWM included).