Glad you're not letting Joe stay at your house again. I agree that it can be difficult to decide where to draw the line when you're facing a new situation. I guess I don't see Joe's possible mental disorder or unemployment as being excuses for him--if anything it might be more helpful to him for someone to say, "Joe, it's not appropriate for you to walk into our bedroom in the middle of the night," or "Joe, you should not have come here without spending money for the weekend," rather than just expecting him to know that and/or acquiescing without comment.
I would say almost all of the things you describe in your post were over and above your obligation to a guest, especially one who is not a visiting friend but rather an acquaintance lodging in your home for a professional-type purpose. But, now you guys are more prepared to deal with this in the future, and that's the important part. I tend to agree towards hosting only people you've hosted before with success, or deciding on some parameters that future guests must meet, like you will only host them Fri, Sat, and Sun nights; they must arrive between 5pm and 9pm on Friday or you won't pick them up; they can eat with you at home but you will not give them money or pay for meals unless it's some sort of horrible emergency; etc..
I tend to be pretty territorial and anti-social, so hosting people in my home, especially those I don't really know, doesn't appeal to me much. However, I know other people are different. My friend Amy (and her DH and son), for example, seems to have someone staying with her almost every weekend, and finds it really hard to tell people no on this score, even people who have done flaky things like assuming lodging at the last minute, displacing more desired guests, and then not showing up... multiple times. Of course other people host a lot with firm boundaries, but this does seem to be a blind spot for some people.