For new frames, I create unique frames for each player, hide ALL of them by default, and then use GetLocalPlayer + BlzFrameSetVisible to show each player their own frames.
Example:
For index = 0, 24 do
healthbar[index] = BlzCreateFrame(...)
BlzFrameSetVisible(healthbar[index], false)
If GetLocalPlayer() == Player(index) then BlzFrameSetVisible(healthbar[index], true)