I think items probably demands most of the RAM.
Imagine that you have 1.000.000 items, which is a real scenario. You probably won't have so much mobiles nor players. Now, if each item has 1000 bytes (for example, your message in ASCII has about 600 bytes) then it would cost 1GB of RAM only for items.
But it is not continuous 1GB of data. It is 1 million chunks of 1000 bytes spread across the memory. The garbage collector has to manage it. On the server start, you need to allocate it chunk by chunk and deserialize item by item. This is why server loads slowly, when you have a lot of items.
Players demands CPU power.
From what I know, server runs in an infinite cycle. At each tick, it has to go through all players and calculate with all mobiles near them. Imagine 100 players spread in the world with each fighting unique 10 mobiles near them. Then the server needs to process 1000 mobiles per 10ms (to prevent lags). 10 micro seconds per processing of 1 mobile. In this 10 micro seconds, it has to calculate all the pathfinding, damage, spells, regeneration, etc. With some simplification, on 2Ghz single core you can do 20.000 CPU ticks per 10 micro seconds, that could be enough. But with 1000 players, it is only 2.000, not much for difficult math behind pathfinding and all the mechanics.
I don't know ServUO possibility of parallel processing, but I know it is not easy to develop in multithreaded environment. Probably many things will be single threaded and therefore in my opinion single thread performance is critical.