ALL und DISTINCT gab es schon immer, wobei ALL im Select der Default ist, deshalb hat ALL eben keine direkten Auswirkungen.
Im Gegensatz zu UNION, da ist DISTINCT zwar nicht anzugeben aber der Default um doppelte Sätze zwischen den Select's auszuschließen:
select [ALL/DISTINCT] ...
union [ALL]
select [ALL/DISTINCT] ...

Mit den Hidden-Feldern hat das nichts zu tun.
Wobei ich mich frage, wozu hidden Felder gut sein soll, außer, dass sie bei select * nicht automatisch kommen sondern explizit angegeben werden müssen.