Good question! A label is a "relocatable address". Nasm generally won't do calculations involving a label, unless it's the difference between labels - which is what you've got, but Nasm apparently doesn't recognize it as such. lea esi, [eax - (here - $$)] will assemble, and is the same as what you've got. BUT... that's only going to tell you the length of the call instruction, not the address you want. lea esi, [eax - (start - here)] will do what you want, I think.
Best,
Frank