Imagine if shops only bought the type of items they sell (armour shop only buys armour, etc...).

Also imagine if they only sold the items they bought. So, if no one sells a particular type of item to the shops, that item does not get sold in the shops. Simple.

Add a separate set of special shops where random items spawn from a fixed list; such shops would not buy anything.

How does that sound for an economic system?

Oh, and, have varying prices for items. If a shop only has one of a given item, it should be terribly expensive; items that everyone unloads on the shop should drop in price noticeably.

I mean, if I decided to sell a piece of Dragon armour to the shop, I want to be able to buy it back. Maybe at 10x the prices I sold it for, but it should still be there, not dissapear into the void.

err... make "decided to sell" be "mistakenly dropped into window".