I know per-project billing is fraught with its own issues, but I'm much more a fan of that vs. time-based billing. It may work out to cost the client more, but it removes that layer of distrust ("is my engineer taking longer to squeeze more money out of me?") and sets the incentive on the worker to get the job done as quickly as possible, since now taking longer becomes the disincentive.
I believe the only folks who should bill hourly are the ones who do jobs where performance of work duties is directly correlated to hours spent working -- i.e. where doing a job "faster" doesn't change the time required. Security guards, retail workers, etc.
I'm sure there are a ton of fallacies in the above arguments, so let's hear 'em...