delaying writes by a factor longer than the max clock skew of the cluster is a pretty common strategy. It is what Google Spanner does.
The max clock skew also has to pick between A and C, in underestimates you lose serializability, in overestimates you pay in write latency.
Eventually the system implemented something similar to "find transaction timestamp at execution time" + optimistic locking, as the article states you lose global linearizability and have to do some re-reads for writes.
What I missed the most from Spanner compared to the system above is that its tricky to do client-side transaction chaining where there are many clients and the order is important.