Which one would be more useful in johto and Kanto in battle and outside of battle?
I would say Haunter, because you are going to need a level 49 Haunter with Mean Look to catch Entei and Raikou and possibly Suicune. It's pretty much the only way to catch them unless you get very, very, very lucky. I'd go with Haunter. Good luck :)
I'd go with Kadabra because it has confuse move , you can catch legendary when their confused.