I think this should do it. This fix for bug 2 keeps the current fix for bug 1 intact:
Moved this...:
(in procedure TBaseSkillPanel.DrawHighlight)
if (fLastHighlitSkill <> spbNone) and (fLastHighlitSkill <> fHighlitSkill) then
SoundManager.PlaySound(SFX_SKILLBUTTON);
...to here:
procedure TBaseSkillPanel.DrawButtonSelector(aButton: TSkillPanelButton; Highlight: Boolean);
begin
if fGameWindow.IsHyperSpeed then Exit;
if aButton = spbNone then Exit;
if (aButton <= LAST_SKILL_BUTTON) then
begin
if (fLastHighlitSkill <> spbNone) and (fLastHighlitSkill <> fHighlitSkill) then <--------------------------------------
SoundManager.PlaySound(SFX_SKILLBUTTON); <--------------------------------------
if (fHighlitSkill = aButton) and Highlight then Exit;
if (fHighlitSkill = spbNone) and not Highlight then Exit;
end;
if fButtonRects[aButton].Left <= 0 then Exit;
RemoveHighlight(aButton);
if Highlight then
DrawHighlight(aButton);
end;