Ich weiß nicht, welche Laufzeiten zu erwarten sind, welche Entfernungen relevant sind ?
Du mußt ja keinen Meter messen, oder ?
Wie lange braucht der Schall bei z.B. 10 cm, so als Richtwert ?(Ich habe keine Lust nachzurechnen...)
Ein Takt bei 16 Mhz dauert 62,5 ns bei Timer 1 mit prescaller 1 hättest Du theoretisch den Bereich 62.5ns - 4ms wenn man die Timerüberläufe mitzählt entsprechend mehr.
Timer auf genau 1µs zu stellen ist genauso einfach/schwer wie 40kHz Takt zu erzeugen Bild  
Dein Ansatz mit dem µs Tick und warten, bis externer Interrupt kommt ist sicher richtig und Wert ausprobiert zu werden, ich habe die Input Capture Geschichte zur Sprache gebracht, weil es mir sehr ellegant erscheint, und auch saugenau, weil man bis auf ein Takt genau messen könnte (jaja Theorie und Praxis).
Und warum sollen 2 Interrupts nicht gut sein ?
Im Notfall kanst Du auch den Interruptflag pollen, ohne Interrupt auszulösen, aber mach es erstmal nach Deiner Nase, bin mal gespannt, was dabei rauskommt.

Gruß Sebastian

P.S.
Ich merke es gerade, wo Dein Problem mit 1µS ist, man hat genau 16 Takte Zeit um alles abzuarbeiten, also vergiß Interrupt, das dauert zu lange, da bietet sich eher Timer 2 mit prescaller 1 und OCR2 = 16 in CTC Mode, damit man keine Zeit mit Vorladen verliert und den Comparematch Flag pollen um
eine Variable hochzuzählen, das würd gehen, ist aber wirklich kritisch...