I still have some reading to do but the whole transaction fee issue seems to be a weakpoint. While in theory miners can set the minimum they will process for and users can set what they are willing to pay, I think the developers have too much power to set up the customary defaults which many will keep. The default for mining software ought to be based on something more sensible and should probably be on the low side. The default on the user side ought to always be zero. Let the user pay more only if they are willing.
The default set on the user side (and for peers to relay transactions throughout the network) was created for the purpose of protecting the network from a Denial of Service attack. This is the main reason that it is not zero.