Here is a solution which works with
biblatex independent of the backend used. Since the OP asked about using
bibtex, my example specifies this, but nothing depends on it.
backend=biber would work at least as well.
This answer is based on moewe's solution. I ran that code and read the output.
biblatex suggested the
defernumbers option there. Looking in the documentation, I learnt that
\DeclarePresort is not specific to
biber. An added (but extremely minor) bonus is that it gets rid of the warning from
biblatex on compilation.
biblatex assigns numbers to reference entries at the beginning of the document. If
defernumbers is set to
true, however, it does not assign numbers until they are first used in the bibliography.
Note that the documentation warns that you need two runs of
latex to get the numbering right, over and above the runs needed to get pagination etc. correct. Moreover, should you change the value of
defernumbers, you will probably need to delete the
.aux file. (Though I didn't find I needed to do this going from the default
false setting to