C# (Visual C# Interactive Compiler), 252242 bytes
a=>b=>a==b?a+" 2":((d=a.LastIndexOfAny(z=((j=new[]{a,b}.Count(x=>"- ".Any(x.Contains)))>0?"- ":"aeiouAEIOU").ToArray()))<0?a:a.SubstringRemove(0,d+1))+b.SubstringRemove(j>0|new0,j+new Random().Next()<1>0?Math.Max(0,bd=b.IndexOfAny(z)-j%2+1)<0?0:d:b.LastIndexOfAny(z));dynamic z,d,j;