I use 5-gallon nylon pain strainer bags (which I picked up from Lowe's or Home Depot) exclusively. They cost like $1.50 a piece, are reusable, easy to clean (give them a rinse and let them dry - once dry, the rest of the grain and hop particles will dust right off) and do a great job as either grain bags or hop filters. They also have 1-gallon sizes.
Edit: For hops, I just stretch the opening of the bag over the lip of my brew kettle, throw some stainless steel washers in the bag to weigh it down, and then add my pellet hops in there. That way, they get plenty of agitation but can still be easily removed.