(1) $rand(1,10)

(2) when a user inits a command set a variable something like " set -u10 %Commands.deny. [ $+ [ $nick ] ] $true " that set well expire in 10 seconds so exists for only 10 seconds.
in the begining of each of your commands you check if this is not set " IF ( !%commands.deny. [ $+ [ $nick ] ] ) { command code in here } ", so you would have something like this...
Code:
ON *:TEXT:!blah:#:{
  IF ( !%commands.deny. [ $+ [ $nick ] ] ) {
    set -u10 %Commands.deny. [ $+ [ $nick ] ] $true 
    ....
    .... the actual commands to the event ...
    ....
  }
}

In some situations the variable which is %Commands.deny.nickname must be written as follows %Commands.deny. [ $+ [ $nick ] ] at other times it can be written %Commands.deny. $+ $nick for instance the set -u10 %Commands.deny. [ $+ [ $nick ] ] $true can actuially be written as set -u10 %Commands.deny. $+ $nick $true.
The rule i beleive is if you are declearing something then you dont need any [ ], if your accessing it such as in the IF statment then they are needed, I leave them in both since then the variable is easy to see as the same thing, this is of course personal choice.
PS: Do not put in a message to wait if they cant enter a command it well just cause u to be flooding the channel with messages.

(3), the latest version is a good version to be running, i wouldnt advise running two instances of mirc from the same folder, this is why your second nick is also running the bot, you simply need to install mirc a second time into a second folder, in fact you can just copy the original folder to a new location, and run the second nick from there, (unload the bot from it tho!)