In the past I’ve hired engineers on a per hour basis; we agree on the hour count while we plan the tasks.
Sometimes it takes them more hours than we planned, sometimes less, but our contract stays the same. There is nothing moral/amoral around them being efficient or padding their estimates IMHO.
Estimating hours for a project is essentially project based billing, it is just more granular.
I don’t think the developers who only work 3 hours a day when they are employed full time are being amoral. If they can do it, more power to them.
I often work 6-8hrs a day with meetings taking 40% of my time. During crunch, I work far more. I don’t think there is anything amoral when the system doesn’t work for me either.