If all the other fields need to come from the "s2" table when they exist, then yes, you would need to use IFNULL on all of them, as well.
But for fields that can come from "s1", just list the field names without the IFNULL.
I know it is a lot of writing, but doing it this way will give the best possible performance. And you only have to write it once, at least.
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.