есть is a tricky one, it can be both "eat" and "there is" you have kinda guess it by context(although, as far as I've seen, "there is" exists only in infinitive, in past it'd be был/а/о (I am still studying so take all I said with a grain of salt, it is what I think I can remember)
Whenever I say шестнадцать into the microphone (in speaking exercises) it never accepts that word, even though my pronunciation is perfect. It must be some mistake, because it only happens with that number and I noticed it in more than one example. I reported it (in a way), hopefully somebody looks into this.
"есть" is the infinitive of "to eat", and also the third person present form of "to be". There is no such "у" phrase rule, but "to be" happens to be the verb that is by far more common when "у" is around.
Here the third person present form of to be is used explicitly. It is omitted in present sentences normally, ("Он учитель" instead of "Он есть учитель" for "he is a teacher"), so that is why seeing "есть" for "to be" without "у" or special emphasis is not so common.
Because "ты" is declined to the dative case "тебе" meaning "to you," it's obvious that you're talking about years of age. So yes, лет is understood here.
If you were asking if a person has sixteen of something else, "ты" would decline to the accusative case "тебя" together with the preposition "у."
У тебя есть шестнадцать свечей? "Do you have sixteen candles?"