Can we set LOCK_TIMEOUT instance- or database-wide?
No it isn't possible to set this as a default and change it from -1 (no timeout).

If it needs to be changed, you have to be explicit with a call to SET LOCK_TIMEOUT &lt;number of ms for timeout&gt;.

As for why there is no way to alter the default, we can only speculate.  But my guess would be that the lack of a timeout would satisfy the majority of requirements for queries, and need to have a lock wait timeout is a pretty corner case scenario, requiring a simple SET statement.

Regardless, you're talking about client-side handling.  Not server-side.  In fact, most providers that I work with by default enforce a command timeout (i.e. System.Data.SqlClient.SqlCommand.CommandTimeout is set to a default of 30 seconds).  Although a bit of a nested requirement with lock requests, it's the same idea.