If concurrency handling is done properly, I believe you won't be facing any performance problems.
The key thing in my opinion is to use optimistic concurrency handling instead of locking for longer periods of time. The technique for this is to use rowwversions.
For starters, have a look at for example
Data versioning in SQL Server using row versions[
^].
Also introducing RVV like identifier in the updating DML statements you can easily spot potential lost updates. This is something that won't be handled by unique constraints and locks when updates are sequential :)