Does SQL Server upgrade to table locks at total locks or session locks?
If the lock count heuristic is per-session then it is less of potential issue.

It is per-session.

Are there any other relevant database properties to consider with respect to lock escalation?

On the database, no, but you can disable lock escalation on the whole instance by enabling trace flag 1211.

what is the “best” way to prevent table lock escalation here?

Why would you want to?

Lock escalation serves a useful purpose in SQL Server by maximizing
the efficiency of queries that are otherwise slowed down by the
overhead of acquiring and releasing several thousands of locks. Lock
escalation also helps to minimize the required memory to keep track of
locks. The memory that SQL Server can dynamically allocate for lock
structures is finite, so if you disable lock escalation and the lock
memory grows large enough, attempts to allocate additional locks for
any query may fail

https://docs.microsoft.com/en-us/troubleshoot/sql/performance/resolve-blocking-problems-caused-lock-escalation
That article also outlines an additional way to prevent lock escalation for a time on a table by running (from a seperate session) a query like:
BEGIN TRAN;
SELECT * FROM mytable (UPDLOCK, HOLDLOCK) WHERE 1 = 0;
WAITFOR DELAY '1:00:00';
COMMIT TRAN