This is what I've come up with. It's right up against the length limit for macros.
Code:
/run local function d(b) for _,k in ipairs({"TextString","LeftText","RightText"}) do if b[k] then b[k]:Hide();b[k]=nil;end end end for _,b in ipairs({"HealthBar","ManaBar"}) do for i=1,4 do d(_G["PartyMemberFrame"..i..b]);end d(_G["FocusFrame"..b]);end
It could probably be shortened by messing with the flags instead, but I considered this approach more reliable.