Repeat a rhyme and loop on the vowels Vowels rhyme: Apples and Bananas

There is a traditional children's song that repeats the same text over and over, only each time every vowel is replaced with a random vowel, but constant across the current stanza.

Challenge

The objective is to propose the shortest code that performs such a transformation on an input text.

Rules


You must print the rhyme as many times as there are distinct vowels in it.
Each print must be separated with a line break (platform-specific combo of \n and \r is accepted).
For iteration i, replace each vowel with the ith distinct vowel in the original text.
The input text is a sequence of printable ASCII characters (range [32, 126].
Input will not contain embedded line breaks.
Only vowels characters must be affected, other must be output exactly as input.
Only vowels characters count: nasal vowels, although sounding like vowels (like in French "Tintin"), must not be handled as a single vowel.
Case matters for the output, but is positional (replacing an uppercase vowel is done with the uppercase replacement vowel)
Uppercase vowels are not distinct from their lowercase counterpart (ie a &lt;=> A)
Consecutive vowels are always considered separately (ie. Boat yields both Boot and Baat)
Since the letter y represents either a vowel or consonant soun (as we're speaking English), handling it as a vowel or a consonant is allowed, however answers must explicitly state whether they handle y as a vowel or not.


Examples:

Hello world

Hello world!


gives:

Helle werld!
Hollo world!


Excerpt from the original French text (translated), with y handled as a vowel:

An elephant that was rambling all gently in the woods...


gives:

An alaphant that was ramblang all gantla an tha waads...
En elephent thet wes rembleng ell gentle en the weeds...
In iliphint thit wis rimbling ill gintli in thi wiids...
Yn ylyphynt thyt wys rymblyng yll gyntly yn thy wyyds...
On olophont thot wos romblong oll gontlo on tho woods...


Note the behaviour on leading uppercase vowel: case is kept at its index (rules 8 and 9).

Vowelless example

Input that does not contain any vowel, like:

lgn@hst:~$ rm -rf ./* ~ /


must produce no output, or a single line break.

Single-vowel input

Input containing a single vowel is output as is.

Dad sat at a car and saw a fat bat.


gives:

Dad sat at a car and saw a fat bat.


This is code-golf, so fewest bytecount code wins (nothing but eternal PPCG glory)!
Retina, 45 bytes

~(K`A\EI\OU
L$`\\?(.)
./$1/i&amp;$*\T`Vv`5*$&amp;$L$&amp;


Try it online! Does not count y as a vowel. Explanation:

K`A\EI\OU


Replaces the text with the literal string A\EI\OU.

L$`\\?(.)


Matches each letter optionally preceded by a backslash.

./$1/i&amp;$*\T`Vv`5*$&amp;$L$&amp;


Outputs a line of Retina code for each letter.

~(


Evaluates the generated code (shown below) using the original input. The . causes the code not to output the (final) buffer. The /&lt;vowel&gt;/i&amp; causes the rest of the line to run only if the input contains the given vowel (case-insensitively). The * causes the result of the line to be ignored, so that the next vowel can be tested. The \ causes the result to be printed on its own line before it is ignored. The T`Vv`AAAAAa transliterates uppercase Vowels to AAAAAs and all lowercase vowels to a. \A is an escape that refers to ASCII 07 (BEL), but E, O and o are built-in character classes that needs to be escaped to give their literal values (e is not a character class, but fortunately it is also not an escape.)

./A/i&amp;*\T`Vv`AAAAAa
./E/i&amp;*\T`Vv`\E\E\E\E\E\e
./I/i&amp;*\T`Vv`IIIIIi
./O/i&amp;*\T`Vv`\O\O\O\O\O\o
./U/i&amp;*\T`Vv`UUUUUu