Actually, the expedient way may be to have two axes...the one with the desired tick labels and the second overlays it with the ones not labelled. Then you can just clear the tick labels entirely from the second. linkaxes to keep the two in synch numerically.
This will still likely have some issues if you try to get too carried away, but probably simpler route than either of the above (although the text() solution isn't that bad, either).
is starting point...enjoy! :)
NB: You get the modulo 500 ticks by default when set the xlim() value...if change it will probably have to manually set hAx(1) ticks as well.