First and foremost, IRC is a protocol. Everything you name here are mostly issues that are not a protocol problem, but client and service issues which can be solved.
Otherwise it's not really an alternative. It does not matter if it's technically a protocol. Users don't care about if it's a protocol, IRC clients had over 10 years to catch up.