REALLY, they are that bad. Frankly, all meat is.
But you can get protein from green peas, spinach, or broccoli. And protein is not what will put weight on him anyhow. If he drinks even 1 glass of milk a day, you are going to be fine. You mentioned beans, but have you tried chickpeas? If he wont eat them whole, get some hummus and he can dip his veggies into it. Also Tahini (sesame seeds), which is super high in protein and 100 calories a TBSP! Great for weight gain. There are pastas made from soy also which have tons of protein.
http://www.13.waisays.com/protein.htm (a neat protein article)
You mentioned that he would eat some cheese, how about cottage cheese or yogurt? Try the Greek Gods yogurt brand available at Sprouts or Whole Foods, and get their full fat variety in Pomegranate or Honey, if you give him honey. They have 270-250 calories per jar and he should def eat a jar at a time, no prob. Also, Sprouts has a "pasture" butter in a bright green foil wrapper which has 110 cal per tbsp (vs reg butters that have 80-100) so that is a great additive to any food to boost cal for weight gain.
If you email me back I can help with lots of other ideas as our 2yr old daughter was below the 5th percentile and is only now below the 10th. So in comparison, you have nothing to worry about. ;-P