I've worked it out - I need to nest the IF statements:

=INDEX(Data,SMALL(IF(Type="Gold",IF(Date=$F$4)),ROW(Name)),ROW(1:1))-5,15

Seems so obvious in hindsight...

Still no idea how to return it in a different order though...