For /userhost or /userip i would reccomend doing as simple check on the returned value. If the value contains no characters (only dots and numbers) you know its an unresolveable host.
As for the speed im not 100% sure what you mean. If you mean that the server starts slowing down in processing your commands, thats because your input is being throtteled. This can be worked around with some code modification (theres a patch somewhere on the forums but im too tired to go hunting right now)
As for the nick change tracking, its currently not possible in the IRCd, although its fairly trivial to add.
There is also the option of third party tools. If memory serves both Anope and Neostats have modules that will track nickchanges to a monitoring channel.