Can someone explain the result set from sys.dm_tran_locks?
You said, there are different 'request_session_id' showing up, so there are many sessions, not one, to read the same table. Shared locks are compatible with other shared locks so there is no problem at all. If you are warring about the memory comsumed by locks, every lock takes about 96 bytes thes is quite small and server can decide to escalate to table lock when:


  
  A single Transact-SQL statement acquires at least 5,000 locks on a    single nonpartitioned table or index.
  A single Transact-SQL statement acquires at least 5,000 locks on a    single partition of a partitioned table and the ALTER TABLE SET
  LOCK_ESCALATION option is set to AUTO.
  The number of locks in an instance of the Database Engine exceeds    memory or configuration thresholds.
  


More about lock escalation here:  Lock Escalation (Database Engine)

Your situation is normal, no lock escalation takes place but just many sessions are reading the same table