Run Dijkstra's algorithm twice to detect negative-weight cycles?
The mistake is in 


  This can only be true if there are no negative-weight cycles reachable from the source.


Actually, this can only be true if there are no negative-weight edges reachable from the source.

So the "double Dijkstra" suggested above may wrongly return false in a graph with negative-weight edges but no negative-weight cycles, whereas Bellman-Ford will correctly return true.