Ouch.
Well, I'd create a new type of Advance for each of these. Take the standard advance that adds a new Skill and make it cost half an advance like raising a lesser Skill. You'll want to add a source tag so it only shows up in your Setting.
Code:
<thing
id="advSkillPS"
name="Gain a New Skill from PS"
compset="Advance"
description="Select a new skill at a d4 rating.">
<fieldval field="advAction" value="New Skill"/>
<fieldval field="advDynamic" value="component.Skill & !Hide.Skill"/>
<fieldval field="advCost" value=".5"/>
<tag group="Advance" tag="AddNew"/>
<tag group="DomainTerm" tag="Focus"/>
<!-- Modify tagexpr to deny skills that have already been added to the character -->
<eval index="1" phase="Render" priority="1000">
<before name="Assign Dynamic Tagexpr"/><![CDATA[
~get the list of all unique skills on the hero and assemble it as a list of precluded tags
var tagexpr as string
foreach pick in hero from Skill where "!Hide.Skill"
if (eachpick.isunique <> 0) then
tagexpr &= " & !Skill." & eachpick.idstring
endif
nexteach
~if there are any tags to exclude, append them to the tagexpr appropriately
if (empty(tagexpr) = 0) then
field[advDynamic].text &= tagexpr
endif
]]></eval>
<!-- Attach the child entity for tracking the advance -->
<child entity="Advance">
<tag group="Advance" tag="MustChoose"/>
</child>
</thing>