I mean, to get good performance I had to do a first pass and log in each and every user in order for them to get cached. If Openfire has to read users from DB, the performance drops sharply. I tested this with a single server using PostgreSQL, ymmv.
Clustering will help by caching sessions and such, but there are clients (like Apple's iMessage - or whatever it's called) that just won't do SRV lookups. These will have no option, but to log in again. Unless you're prepared to work some low-level networking magic.
I hope this clears things up a bit for you,
Alex