I cross-posted this at SuperUser here and got an answer that works. Here it is for future searchers:

=MIN(IF(ISNUMBER(MATCH($A$2:$A$6,$E$2:$E$4,0))*ISNUMBER(B$2:B$6),B$2:B$6,""))
Where:

ISNUMBER(MATCH($A$2:$A$6,$E$2:$E$4,0)) checks whether item is included in list of valid items
ISNUMBER(B$2:B$6) checks whether current item has a price or it's empty (otherwise Excel would automatically convert blank to 0)