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.