How to limit db_update() to update first n rows
It doesn't look like it's possible I'm afraid.

db_update() uses the UpdateQuery class, which doesn't support the range() method that a SelectQuery does. 

You could probably subclass UpdateQuery and add that behaviour, but for the amount of work that would take you might be better off just using a raw SQL statement with db_query() like you've suggested.