Hi Siraj,
In principle, it is possible to do so. I've seen many freelance companies that employ people on different freelance projects and make a business out of it, however, you need to do a lot of bidding work and followups. Most companies that do so are usually not always preferred by buyers who try to look for individual programmers to reduce the cost, but it is doable.
About your other question, when you freelance you sort of become the guy who knows a little bit about every thing, which could be helpful if you join a company at the management level, however, if you want to go vertical on a certain specialty, you need to focus on one type of projects and keep focusing on it, this will rank you better in the tech seniority than knowing a little bit of every thing.
Hope this helps.