Time for Uncle Psyklax to get out the old debugger and explain what's going on.
The routine that does this weird 'crown' thing is at $883C, and starts by loading the current amount of lives from $75A, then checking if it's more than ten. If not, no problem, just move on. But if it IS, then it loads $308 with 9F, and $309 with the lives minus ten.
So let's say you have 12 lives left. $75A has 0B (because the game uses one less than the actual number). The routine will add one to make twelve (0C) and notice that it's higher than ten (0A), whereby it subtracts 0A from it, leaving 02. it stores that to $309, and stores $9F to $308. Thus, we'll see a 'crown' and 2, to mean 12.
It would be simple to replace 9F with 01 (change $859 in the ROM), but then the palette is wrong on that tile. But also, what happens if you have over 19? You'll see a 'crown' with a letter.
This, plus the differing palette, makes something very clear: this is no bug. Although your lives can obviously go up to 255 before running over to zero, there's no way you can see it on the screen. Doing so would require a longer routine that subtracts ten, checks, subtracts ten, checks, and so on. Anyone why knows about SMB's inner workings is aware that there's next to no bytes left at all inside the ROM, so clearly the programmers decided "well, not many people are ever going to acquire more than nine lives anyway" (they obviously didn't know about the infinite shell kick thing) and did this quick and dirty routine as a compromise.
So, if I were you, I wouldn't bother fixing it, but if you really want to at least go up to 19, do this:
$7A6 - change BA to AA (fixes the palette)
$859 - change 9F to 01 (fixes the 'crown')