Also, how do I set the primary email address?
You can set the primary address via gpg itself.
In Linux gpg:
gpg --list-keys your-key-id
Select the UID you want to make the primary, for example: 2
Then type: primary
Then save and re-upload
I no longer have a live example, I updated my key recently. But prior to my update, the primary email address I set via GPG showed at the top when my key was viewed via Keyoxide.
Maybe it would be okay to make it configurable, to set your key to only show certain claims if a specific email address was requested?
It's a good idea, but maybe there should be a way for those who prefer to show all addresses. Like you, I also use my email address to link to Keyoxide instead of the fingerprint. (Although, since I started using custom domain/301 redirect, I can go back to referencing the fingerprint instead of the email address.)