!= check on struct datatype

This seems like a non-problem to me. Why not simply reset the settings like this and forget about initializing the default settings in EEPROM at all:

void reset_settings_to_defaults(){
  static const settings_type s_default;
  s = s_default;
  EEPROM.put(0, s);
}

Then you don't have to worry about comparing the settings structures.