The OpenGL flash thing is fixable by just making the "flash" polygon bigger.
(A better option would be to tie it to the full rendering viewport thing, instead of drawing it in 3D space with a custom view matrix thing.)
The software one is probably much harder to fix, but one option may be to, when both views' palettes are different from each other, use the main palette, and then "fake" palette swaps by looking at a player's viewport and then swapping each pixel out based on what the intended palette would most closely match on the main palette.
That might be expensive/slow, especially on higher resolutions (as it'd be done pixel by pixel), but possible?
I would say flashing both screens is perfectly acceptable... It's weird to just not have any effect, especially for something like a Teleporter or Recycler which effects both players.