WoW doesn't care if you overwrite (re-use) frame names, you'll just get the first one created using _G["FrameName"] or FrameName but using the local referernce will still differentiate them in your code.
I moved the PLAYER_TARGET_CHANGED event as per SDPhantom's suggestion down to the target frame to make it easier to read/understand ie. the Player frame doesn't now need to have a reference to the Target frame to make the change as it's all done in the Target frame.
Lua Code:
--Player Frame
local fp = CreateFrame("Button", "FarmootPlayerPortrait", UIParent, "SecureUnitButtonTemplate")
fp:SetSize(60, 60)
fp:SetPoint("CENTER", -40, -350)
fp:SetAttribute("unit", "player")
RegisterUnitWatch(fp)
fp:SetAttribute("toggleForVehicle", true)
fp:RegisterForClicks("AnyUp")
fp:SetAttribute("*type1", "target")
fp:SetAttribute("*type2", "togglemenu")
fp:SetAttribute("*type3", "assist")
fp.Texture = fp:CreateTexture("$parent_Texture", "BACKGROUND")
fp.Texture:SetAllPoints()
SetPortraitTexture(fp.Texture, "player")
fp.Border = fp:CreateTexture("$parent_Border", "BORDER")
fp.Border:SetPoint("TOPLEFT", -6, 4)
fp.Border:SetPoint("BOTTOMRIGHT", 6, -10)
fp.Border:SetTexture("Interface/PLAYERFRAME/UI-PlayerFrame-Deathknight-Ring")
fp.Border:SetVertexColor(1, 1, 0, 1)
fp:RegisterUnitEvent("UNIT_PORTRAIT_UPDATE", "player")
fp:SetScript("OnEvent", function(self) SetPortraitTexture(self.Texture, "player") end)
--Target Frame
local ft = CreateFrame("Button", "FarmootTargetPortrait", UIParent, "SecureUnitButtonTemplate")
fp.Target = ft -- based on suggestion of Fizzlemizz
ft:SetSize(60, 60)
ft:SetPoint("CENTER", 100, -350)
ft:SetAttribute("unit", "target")
RegisterUnitWatch(ft)
ft:SetAttribute("toggleForVehicle", true)
ft:RegisterForClicks("AnyUp")
ft:SetAttribute("*type1", "target")
ft:SetAttribute("*type2", "togglemenu")
ft:SetAttribute("*type3", "assist")
ft.Texture = ft:CreateTexture("$parent_Texture", "BACKGROUND")
ft.Texture:SetAllPoints()
ft.Border = ft:CreateTexture("$parent_Border", "BORDER")
ft.Border:SetPoint("TOPLEFT", -6, 4)
ft.Border:SetPoint("BOTTOMRIGHT", 6, -10)
ft.Border:SetTexture("Interface/PLAYERFRAME/UI-PlayerFrame-Deathknight-Ring")
ft.Border:SetVertexColor(1, 1, 0, 1)
ft:RegisterUnitEvent("UNIT_PORTRAIT_UPDATE", "target")
ft:RegisterEvent("PLAYER_TARGET_CHANGED") -- based on suggestion of Fizzlemizz
ft:SetScript("OnEvent", function(self) SetPortraitTexture(self.Texture, "target") end)