If there are more than say 50 IdPs it would make sense to not put all of them in the HTML, but instead dynamically load them based on search queries. Together with #8 we can implement something that can scale really well for unlimited number of IdPs.
use XMLHttpRequest to send AJAX calls to a search endpoint. If < 50 results are available populate the list of IdPs, otherwise ask user to type more.