Some good ideas, with a few suggestions on my end.
1. The message of a player who banned them should only be displayed in opchat, and maybe console logging (although in the logs you see "$nick used /ban # player" before the ban takes place, so that's pretty obvious). This prevents someone from banning a user and their friend/brother/sister/pet cat have a rage at the person who banned them.
2. The only additions I see are the removal of the users join date, and comparing their join date to the current date to return a difference between then and now. This method will not reflect their time spent online, but only their time between today and the day they joined. For all we know they could have been offline for several months, but it wouldn't make any difference.
Without adding an extra variable, and extra timer to the server to count every second that a player has been online, this "time spent online" would not be accurate at all. It's a good idea for the future though, once the memory leaks have been closed, and the software gets more stable. :3
3. Haza has already made my suggestion already, and it seems like a good idea, although adding timers and whatnot can add to the strain of the server, especially if multiple people are muted at once.
I'll have a think about them all logically, and some of them may be implemented. :3