That's quite vague, the code you are showing are showing... nothing, it's just aliases being called.
Couple notes though, the first one is to assume that the sqllite dll is single thread, as is mIRC, meaning only one thing is running ever.
Your code in 1) and 2) has a [ touching %npt.channel, that is incorrect and should result in $null being used, yet you claim everything works as expected, that is mighty surprising.
The fact that you mention wrong channel being used for /msg 100% means it's an issue with your script, there's no overlap going on when /msg is executed, the wrong channel is being passed to /msg, somehow (you're using the term overlap incorrectly).
The time taken by the dll should only affect the eventual delay of the timer/sending of the message, it believes it's safe to assume there's no memory overlap going on there or you would have found a major issue in the scripting language.
The [ touching the variable could be the reason for all of your issues, but there's another thing, /timer are double evaluating the command parameter, so for example /timer 1 1 msg #channel %myvar, if %myvar contains the plain text value $ip, the timer command will evaluate %myvar once and the timer now has the following command associated to it 'msg #channel $ip', which when executed, will result in the value of $ip being sent, instead of plain text $ip.