To be fair, every single time I went to a character meet and greet in a hotel (and I confess that I sometimes popped into hotels I wasn't staying at); the queues were really reasonable!
Even during the summer, I never had to queue for more than 15 minutes to meet a certain character, so I don't think that many locals and non-hotel guests (of that actual hotel) were screwing over the system by showing up.
Heck, one trip in July, I did two meet and greets in the Sequoia Lodge, where I was staying (one before and one after breakfast), one in hotel New York and then went into the Disneyland Hotel lobby (NY and DL because I was trying hard to meet Launchpad, which failed). In NY there was a 5 minute queue for Goofy, so me being there didn't mess things up. And in the DL it was so quiet that there was literally NO ONE queuing to meet Mickey Mouse. I literally had my picture taken with him because he was standing around having nothing to do!
And that was at the tail end of July, so well into the summer peak season.
i didn't make a habit of trailing all the hotels for characters, but when I stayed at a hotel I did see if I could meet one, and I did often pop into the lobby of the Disneyland Hotel, even if I just went to DLP for a day. But again, the queues were never ever long, so me doing that had no actual impact on anything.
To be honest I think the main reason Disney pulled them is simply because they think they can cut costs that way.
I'm not sure whether they are actually succeeding or not, but regardless, I would like to see the characters returned to the hotels. I think it always added a little extra

Of course, if they wanted they could very easily check whether or not someone is entitled to be there (whether it is as a hotel guest, an AP holder or a shareholder), by making a CM check the hotel easy pass/AP/shareholder card before people enter the queue.
So it'd be super easy to make sure only paid guests so to speak get access to the hotel characters.