This seems like kind of a weird approach. I've never thought to myself, Hmm, I need to go out and pick a project to contribute to. If I have a patch to send out it's because I'm already using the project for something and I need to upstream a change.
Think about why you are contributing to a project: Are you adding a feature that it lacks but that you need? Are you fixing a bug that hampering your other work? I wouldn't just pick a random project and file a PR just because I want to contribute something to open source. I'd start with a project I already use, where I have a problem I have to solve, solve it, then contribute the patch.
It seems backwards to start with "I want to write a patch to something" and then go out and find a project to patch.
Not in general. I have never in my life experienced the "smacked down in PR for some arcane technical reason, likely with a rude comment" that the O.O.P. wrote. Although I wouldn't let that bother me. If someone doesn't want to merge a patch I send them, that doesn't even remotely hurt my feelings.
You can "Contribute to Open Source" without your contributions being accepted/merged.
Think about why you are contributing to a project: Are you adding a feature that it lacks but that you need? Are you fixing a bug that hampering your other work? I wouldn't just pick a random project and file a PR just because I want to contribute something to open source. I'd start with a project I already use, where I have a problem I have to solve, solve it, then contribute the patch.
It seems backwards to start with "I want to write a patch to something" and then go out and find a project to patch.