I tested your parameters, and the issue seems to be the overlapping channel ranges. These are the params:
OSD1_CHAN_MAX 1300
OSD1_CHAN_MIN 900
OSD2_CHAN_MAX 1700
OSD2_CHAN_MIN 1300
OSD3_CHAN_MAX 2100
OSD3_CHAN_MIN 1700
OSD4_CHAN_MAX 2100
OSD4_CHAN_MIN 900
OSD_CHAN 10
notice that there is lots of overlap, especially OSD4 covering the entire range. When I fixed your overlap so that each channel has its own range it worked correctly.
I also tested your parameters with 4.0.9 and it behaves badly there too, cycling constantly between screens.