Your addon can totally use a locally timed OnUpdate... how many seconds do you want between updates?
The below code creates a frame that does stuff every 5 seconds. The "elapsed" thing only updates on full seconds, afaik, so it can't be used for, say, 2.5 second updates... but oh well, in that case, 2 or 3 should work fine.
Code:
local a = CreateFrame("Frame", nil, "UIParent")
local timer = 0
a:SetScript("OnUpdate", function(self, elapsed)
if (timer >= 5) then -- Check every 5 second (approx)
-- stuff you want goes here
timer = 0
else
timer = timer + elapsed
end
end)