The tl:dr version is I probably wouldn't worry about it for now.
Maybe it could cause issues. I've got way more intensive stuff running like this and it doesn't seem to cause a problem. But then again my module is about 1/3rd the size of Div:OS Act 1. But to give you an idea, I have a scene where I put at least 25 global NPCs all seated in a little auditorium and they all chant overhead texts (and I added animations) like this in unison several times. No issues.
You could always throw another query on it like:
IF
TimerFinished("TextTimer")
AND
Random(5,_TextNum) // 5 should be the maximum integer.
AND
DB_OverheadText(_TextNum,(STRING)_TextToShow) //not sure if you need (STRING) or not
AND
_Player.isPlayer()
AND
CharacterCanSeeCharacter(YOURCHARACTER, _Player,1)
THEN
CharacterDisplayText(YOURCHARACTER,_TextToShow);
TimerLaunch("TextTimer",10000); //Restarts the same timer.
That way it only displays text when your character can be seen.
This does introduce another problem though in that the timer still has to restart but it will not since the CANSEECHARACTER query will not always be true. So you could add another conditional after this one:
IF
TimerFinished("TextTimer")
THEN
TimerLaunch("TextTimer",10000);
And then simply remove the timer launch from the statement with the display text.
There's a few different ways I can think of doing this that would be even less intensive.
You could have them fire from a character event in a charscript. That would probably be the least resource intensive way of going about it. Charscripting is annoying though so if it's just a few NPCs I'd leave it in the story editor.
If we're talking a larger campaign with lots of NPCs with this type of overhead text I would switch it to an automated dialog AND a charscript.
And just as a random note: If you aren't already using it, I would say bite the bullet early and switch over to the Standalone Project Template. Or you could do what I did and piecemeal the scripts over.