"voici "refers to what you're going to say : "voici la raison de mon retard : il y avait de la circulation"
"voilà" refers to what you've just said :"il y avait de la circulation, voilà pourquoi je suis en retard"
In spoken language we tend to use "voilà" in any case
You'll hear "ouala" for voilà sometimes, in (parisian and) banlieue speak. It sounds like the Arabic oath Wa Allah al adime / oualah el azim. Takes the meaning of "swear to god it's the truth" on top of the "Voilà" you know.
In its literal sense, one hears voilà much more used than voici, regardless of the proximity of the thing being pointed out. This differs from English, which would use here is or there is fairly clearly according to proximity.
As you said, voici and voilà are readily mixed today. When I first came over and made my very first phone call in French, I was totally lost when the person replied "Il n'est pas là". I was very serious about the difference between ici and là...
I tried to say: "I know he's not with me but is he there with you". This lasted a few minutes, I must admit!
Ok, it says that voilà only refers to things that are farther away (there is/are),
while voici is used for close things (here is/are), plus voilà can be
used more widely, for example, instead of ago (voilà trois heures),
and to say "that is why" (Voilà pourquoi je suis parti), and to sums
things up, at the end of the sentence, and to use it instead of yes,
But, if so, how come I can say "Voilà votre livre",
when I give you your book, when I have it in my hands and offer it to
you, so the book is not father away, right? It's here, right now, in
my hands and you are talking it? So, there is no difference at all,
then, and you can use both words, besides, of course, the wide meaning
of voilà, as above?
If they are the same in the narrow meaning of use, why to have two
different words at all?
all is subjectivity in this case
I personally never use "voici", and I don't know why! I find it maybe sounding too formal, which is a bit silly I admit
so, whether the object is far or near, I always use "voilà"
do other natives think like me?
when talking about duration since an event are voici and voilà interchangeable or is one correct and the other incorrect - for example
Voici trente ans que je suis marin or Voilà trente ans que je suis marin. which is correct. An explanation would be most welcome
In your particular context, I don't find 'voici' et 'voilà' interchangeable. It's maybe the same thing in English between 'there is...' and 'here is...'. If you take a different example, like :
'Me voici marin à présent' or 'Me voilà marin à présent', these 2 phrases are interchangeable, even if 'voilà' is again more used, 'voici' having the meaning of 'right here, right now'.