I have someone who sells a variety of physical products that have different weights and sizes. What's the best way to set that up so customers aren't charged multiple flat rate fees? Also, what plugin would be best for this? I'd like to have one that allows handling fees.
What you are talking about is called Table Rate Shipping which will give you better control for e-commerce.
There are some very good ecommerce solutions for WordPress including
Personally I think choice comes down to other factors
to be honest ... I can say it is likely that GetShopped or WooCommerce can do all of these so it will be a matter of adding up the premium / plugins costs.
There are plenty of other WordPress ecommerce solutions, but many of them will not meet all 5 of these requirements
and dare I say it ... you should always compare this to Magento which is also a LAMP stack / PHP / Apache / SQL based ecommerce solution.