Ok - totally solved!
Set OnChange property of Dropdown to:
If(CountRows(Selections)=3,UpdateContext({Selections: Blank()}));If(CountRows(Dropdown.SelectedItems)>10,Reset(Dropdown));UpdateContext({Selections: Dropdown.SelectedItems.Value})
Set DefaultSelectedItems property of Dropdown to:
If(Not(IsEmpty(Selections)),FirstN(Selections,10)))
The effect is that attempting to select an 11th item makes the drop-down list close, and the 11th item is not added. The first 10 selections are still there. I'd suggest either using a Concat() to string together all of the selections and displaying with a label, or triggering an error message - so your user realizes they can only select 10 items.