Even default ZO_SavedVars allows access to saved variables of the different character - using the GetInterfaceForCharacter method.
For example:
Lua Code:
local savedVars = ZO_SavedVars:New("MySavedVarsGlobalTable", 1, {})
This will create interface for saved variables for current character.
If you want to get data for different character, use:
Lua Code:
local savedVarsForDifferentChar = savedVars:GetInterfaceForCharacter("@displayName", "characterName")
--or account wide settings:
local savedVarsAccountWide = savedVars:GetInterfaceForCharacter("@displayName", "$AccountWide")
However it is more suitable for copying settings from one character to another. It will not help you with iterating over the existing account/character names stored in the table and you will need keep list of chracters somewhere (probably in account wide settings).