Today, glitches are the main option. In the past, in addition to the social aspect (which GF really pushed), the other main option was to use Stadium to get more of the exclusive Pokemon (Eevee, the starters, the Hitmons, and the fossils). Beat the Elite Four, and get a random prize. Slow, but potentially valuable.
I do think that the social aspect often feels too forced in Pokemon. Buying an extra game to solve the exclusives issue isn't sufficient; you have to have an extra system if you want to trade with yourself. While I've caved and done that from DS onward, and can do it via GBC and GBA for gen I and II, I still can't easily trade with myself in gen III.