Disclaimer: I'm a newbie...
Am I correct that if you merely add a ROWVERSION column to your table that SS will prevent overwriting an interim change, but will not communicate that the update failed?
To my newbie ears, then, this sounds like the simplest approach possible, then, that would be effective.
* add a ROWVERSION column to every table (which one could do automatically, I'm sure)
* add a TRIGGER (AFTER) to every table to check @@ROWCOUNT for zero. If zero, notify the user that their update failed and why.
In your example you use PRINT to report the failure. Is that just an example that will only work in Management Studio, or is that going to work in an app? If not, how does that typically get back to the user?