Simple solution is a listing fee that GW2 did. When you list an item you pay a fee based on how much you put the item up for. If at any point you want to change the price or take the item down you do not receive the listing fee back and must pay again when you put it back up.

This will strait up stop the undercutting war as person A who listed first and then got undercut would not risk losing more money trying to undercut person B who undercut them just to sell faster. This also forces people to pay attention to buying trends and list certain items at reasonable prices.