I'd crate your dog (is he crate trained?) when company comes over unless he's familiar and comfortable with the guests. I'd stuff a Kong or give him a special treat in the crate and just let him be comfortable. If you have the same friends over a lot, he'll likely get used to them and then you can start introducing him slowly. Ask your friend to not look at your dog but throw treats near him. Then once he gets comfortable with that (if he goes for the treats), have your friend hold out his/her hand with the treats (still not making eye contact). If your dog will take treats from your friend's hand, he'll likely warm up to her/him soon enough.
As for kids on the street, I protect my dog from over ambitious children. If your dog snaps at a child (or worse, bites one), you'll be blamed, even if the child was aggressive. My dog is good with kids, but it doesn't hurt to be cautious. Just tell the kids that your dog is shy and doesn't want to be pet right now. Once your dog gets more used to strangers, he might be better with kids, but you really have to teach children how to approach your dog (from the side not head on, not trying to pet the dog's head, etc.). I wouldn't even start that now, though, since it sounds like your dog needs to get used to adults.
My dog doesn't care for men (well, many men--she doesn't hate them all), and if she's uncomfortable, I just excuse myself and keep going. Her comfort is more important to me than someone who thinks they have the right to get in her face.
You can teach most dogs to become more comfortable with people. It does take time and patience, though.