Coroutines are used to pause execution of a routine (a section of the code) whilst waiting for a callback, for example. They aren't a replacement for timers, but rather an addition. If you want to pause and then resume coroutines after some time elapses, you'd be using setTimer as well.
If you want temporary vips and bans you'd be best using traditional data storage (XML files, JSON files, SQL, etc. -- preferably SQL) with timestamps to mark end-time and setTimer to trigger the function that removes the vip status or ban. That way you can restart timers when your resource restarts for any reason, since you know the current timestamp and end-timestamp, you can calculate how long setTimer you need.