I go for highly normalized. Third normal form (TNF) is the lowest that I'll voluntarily go in an OLTP database.
Yes, changing the way that data is organized will change system performance. In general, I prefer to keep the individual pieces (rows) of data atomic, meaning that they can't be subdivided in any meaningful way.
Where performance is concerned, I think that every row should have a
Primary Key, and every row that needs to reference another row should use a
Foreign Key. I always index the Primary Key (usually implicitly via constraints), and almost always index Foreign Keys (again, usually using constraints).
If you are really needing to execute a thousand queries for user requests, then this is fertile ground for a datawarehouse. I wouldn't try to handle that type of processing in an OLTP database.
-PatP