I've been working on my collection for years. I usually buy stuff at competitions, but I've also been to a few gyms and bought stuff directly from there. I've also bought multiples before so I could have one to wear and one to trade (because I'm like you-I get attached to my shirts. haha.). I think the best place to trade though, is worlds. If you're ever going to get the chance to go, bring bows, shirts, jackets, pants, anything. The kids stand out in the courtyard and empty their bags out for trading.
Oh and this may sound stalkerish (I swear I'm not a stalker haha.), but the night before a competition when we get the schedule, if there's a team I don't have a shirt from that I want, I find their official facebook page and make a post on there. I usually get a ton of responses and that's partial to my huge shirt/shorts/bow collection :)