I think the best way to determine who gets a varsity letter is also the simplest: who are your top-7? Varsity races only allow 7 runners from each school, those are your varsity runners. It's no different from any other sport. If you are on the Varsity team you are a Varsity athlete and get a Varsity letter. If your team is slow and your 7th Varsity runner runs a 25:00 5K, he still gets a letter because he is better than the JV runners.
As for your other issue, I would put the minimum amount of effort into the kids who legit don't want to be there. Include them in practice, tell them what to do, make sure they don't get hurt. That's it. Focus your time and energy on the ones who want to be there.
After that, you have to offer rewards. The key with this is dangling those carrots in front of them BEFORE the summer starts. Get summer mileage shirts made early and let them see them in person so they know what is up for grabs. If one kid runs 301 miles and another runs 340, they both get a 300 mile shirt but the 340 kid gets a "highest mileage" patch or something as well. Hand out window decals with the school XC logo on them. Do anything to generate interest.
Announce that in order to be a team captain you must attend summer workouts and run X mileage. Once the season starts, bring the kids who ran the top-X mileage totals in the summer to a big college meet, and announce that surprise in front of the whole team. Don't be afraid about kids feeling left out, they need a little kick in the pants and if they care enough, they'll run the next summer.
This is more big picture stuff, not just summer, but the biggest thing with XC is creating a culture. I was fortunate to coach a track distance team that had a lot of dedicated kids on it, but I also applied a lot of things that my HS coach did that we all liked.
Start traditions. Hold a handicapped race each season where the slowest kids get a head start. We always called it the Pursuit Championships and I'd make a medal or some type of award up and it was a big deal because often times the slower kids would win and it would be the only medal they'd ever get. Have one or two Slurpee Runs (or ice cream runs or whatever) where they di an easy run to a 7-11 or ice cream place and you buy them a treat. If 40 kids are not into the team, give them that day off and only reward the kids who care.
Find some routes to practice on that can have some sort of mystique or are really tough. We had one called "Soup." It was a long run up hill and at the time there was a big decline that went into an incline (or a bowl-shaped, hence the name soup). Each group had to run a set number of bowls before returning to school. We hated it, it was hard, but at the same time we got a certain level of pride from hitting a certain number of bowls. It was just another thing to add to our team's lore, and it gave us something to make us feel strong, something the football, baseball, and basketball players had never been through.
Challenge the kids to certain milestones, whether it is X number of kids under 21:00 in the first meet, beating a rival in a dual meet, having X combined summer mileage, etc. Make the stakes high, like letting them give you whatever haircut they want for the last meet of the season or something like that.
Make it fun, the ones who like it will care more, and they will try harder. There will be ones that still don't care, and that's fine. You still give them the minimum attention necessary and focus on the others. Create a culture of fun and hard work and after a few years you'll see more dedicated runners and better performances on the course.