Slice fish fillets into 1-in.-wide strips and place in a bowl. Add 1 tbsp. fish sauce and the cornstarch and toss to coat evenly.
Heat oil in a large pot over medium heat. Add shallots and cook, stirring occasionally, until just softened, about 5 minutes. Add garlic and cook another 30 seconds. Add tomatoes, ginger, chile, fish skeleton and head, and 2 qts. water; increase heat to high and bring to a simmer. Lower heat to a low simmer and cook, uncovered, 1 hour. Remove fish skeleton and head and discard.
Add fish strips and lime juice just before serving, then simmer 3 to 5 minutes, until fish is opaque throughout. Taste broth and add more fish sauce if you like.
Ladle into warmed soup bowls and top with cilantro and toasted garlic. Serve immediately.
*A fishmonger can fillet the fish for you, but be sure to ask for the bones and head-they give rich flavor to the soup.