Recently I had to create a new Site Collection and add multiple Site Collection Administrators. I searched the internet offcourse and found a solution by Keith Richie. You can merge step 1 and 2 by using the EnsureUser method provided by the OM.

user = rootWeb.EnsureUser(“domain\loginname”)
user.IsSiteAdmin = True
user.Update()

You can use the same method to set the Primary and Secondary Site Collection Administrator.

site.Owner = rootWeb.EnsureUser(“domain\loginname”)
site.SecondaryContact = rootWeb.EnsureUser(“domain\loginname”)

This way you don’t have to pass the name and email of the users.