I agree pircbotx is a good start. I started there and now use Java’s socket library - the framework for connecting and receiving messages are simple enough anyway
As for rate-limiting I simply block my writer thread once it hits the cap, and implementing a connection pool is on my TODO
edit: If you opt for pircbotx, here’s a handy setup tutorial if unsure how https://www.youtube.com/watch?v=zSAQTtBTXN0