Mark, I hate to say this, but your solution actually doesn't work in terms of forcing the getutcdate() call to be evaluated for every row. This trick only works when the table column is an argument to the function. In this case, the dateadd() is forced to be evaluated for every row, but the getutcdate() call is still evaluated only once.
(Okay, I guess that puts the onus on me to show my solution in full... see above)