As ever with these sort of questions, there are almost two many variable for us to give a sensible answer...!
Some general thoughts.
1) Limit the number of rows and columns returned to the users. Users filters and paging to reduce the number of rows, and only return the columns they need to see. Use TypedLists, TypedViews and DynamicLists for building list forms, only use EntityCollections when needed.
2) Your architecture looks sensible - make sure that you build it so that each layer can be on a server on it's own if you need to build up for scalability.
3) 100 users is not a lot. In the typical line of business/CRUD app most uses spend most of the time staring at the screen, not requesting or updating data. Modern server hardware should cope with this without breaking a sweat
blog.stackoverflow.com has some good blog entries about the sort of hardware that they use to support one of the busiest developer Q and A sites on the web - worth a read.
Matt