I prefer by the hour because you can better leverage the unknowns. If some issue holds you back you'll still get payed for the time resolving it, which is fair. Deadlines can change, either because of the client or some complication software-related or even some personal issue. This way, the per-hour will help because you can stop and resume whenever needed.
Regarding your concern about being faster, it just shows you could earn more per hour. While it may put you in some disadvantage when possible clients see your rate, you can always pitch that you're faster and better than the competition and your rate reflects that.
I prefer by the hour because you can better leverage the unknowns. If some issue holds you back you'll still get payed for the time resolving it, which is fair. Deadlines can change, either because of the client or some complication software-related or even some personal issue. This way, the per-hour will help because you can stop and resume whenever needed.
Regarding your concern about being faster, it just shows you could earn more per hour. While it may put you in some disadvantage when possible clients see your rate, you can always pitch that you're faster and better than the competition and your rate reflects that.
There is still going to be a limit to the hourly rate in the end, however.
I guess you're right :)