Unfortunately SkillProperties are solely for applying statuses, so you can't assign a different summon template there.

I'm not sure if SELF checks work properly for summon skills either, so I would still go with the scripting option, as you it would still be the easiest method in the long run.

What you could do is still have the "base" skill be a target skill, but instead of CharacterUsedSkillOnTarget, use the position alternative like so:
Code
IF
CharacterUsedSkillAtPosition(_Caster, _X, _Y, _Z, "Target_MyMod_RacePower", _SkillType)
AND
CharacterGetRace(_Caster, 0, _Race)
AND
CharacterIsFemale(_Caster, _IsFemale)
AND
DB_MyMod_RacePowerSkills(_Race, _IsFemale, _SummonSkill)
THEN
DB_MyMod_Temp_CastRacialSkill(_Caster, _X, _Y, _Z, _SummonSkill);

//If no race matches were made, use "Default"
IF
CharacterUsedSkillAtPosition(_Caster, _X, _Y, _Z, "Target_MyMod_RacePower", _SkillType)
AND
NOT DB_MyMod_Temp_CastRacialSkill(_Caster, _X, _Y, _Z, _)
AND
CharacterIsFemale(_Caster, _IsFemale)
AND
DB_MyMod_RacePowerSkills("Default", _IsFemale, _SummonSkill)
THEN
DB_MyMod_Temp_CastRacialSkill(_Caster, _X, _Y, _Z, _SummonSkill);

IF
SkillCast(_Caster, "Target_MyMod_RacePower", _SkillElement)
AND
DB_MyMod_Temp_CastRacialSkill(_Caster, _X, _Y, _Z, _SummonSkill)
THEN
NOT DB_MyMod_Temp_CastRacialSkill(_Caster, _X, _Y, _Z, _SummonSkill);
CharacterUseSkillAtPosition(_Caster, _SummonSkill, _X, _Y, _Z, 1, 1);


Your databases would then have to be updated to account for the new "_IsFemale" value:

Code
DB_MyMod_RacePowerSkills("Default", 0, "Summon_MyMod_MaleDefault");
DB_MyMod_RacePowerSkills("Default", 1, "Summon_MyMod_FemaleDefault");
DB_MyMod_RacePowerSkills("Dwarf", 0, "Summon_MyMod_DwarfMale");
DB_MyMod_RacePowerSkills("Dwarf", 1, "Summon_MyMod_DwarfFemale");