In practice it will round-robin because all of those guys have the same performance characteristics but through whoever else is upstream of you in the DNS chain. The SOA isn't used for resolution so it doesn't matter there.
The NS records and the WHOIS should be the same usually. One comes from the registrar's configs and the other from your next level upstream resolver (which should, unless it's cached and a recent change happened, be the same). But the thing that is used is whatever your next level upstream resolver is, which is the `dig` output unless you did `dig @someoneelse`.
The SOA nameserver is pretty much only significant for DNSSEC these days. In the AWS case there, I don't think it does anything unique. Pretty much there just to meet the standard.
I remember in the past I've managed to screw up my setup so that the name servers on WHOIS and name servers on DNS NS records mismatched. I can't remember which record won during name resolution.
I guess I still don't understand why the name servers need to be both in WHOIS records and DNS NS records. Does the name resolution use the name server data in WHOIS records in any form or manner?
In short, name resolution does not use the records in WHOIS.
Think of the WHOIS information as more of an administrative database, and the actual DNS servers (which are located at the location of the NS records) as the operational database.
It is useful to know, in your administrative database, how to get to the organisational database, but it does not hold all of the information -- just where it is located.
In operational contexts (actual DNS lookups), you only use the operational database (the nameservers).
In administrative contexts (transferring a domain between registrars), you use the information from the administrative database (WHOIS).
There are additional wrinkles, like GLUE records, but those are probably a bit beyond the scope of what you're asking.