Thanks to this blogpost, I found a solution. The real tool that I was looking for was wgrep which does the multi-editing heavy lifting that I was missing. Here are the steps for using the Silver Searcher backend:
After you've found the search results, run C-c C-o (ivy-occur)
Toggle the edit flag of the buffer to enter wgrep mode: hit C-x C-...
This is not possible with the current code AFAIK (see helm-ff-initial-sort-method). One solution that doesn't require using a sorting algorithm is to append two lists, one containing the tex files and the other one containing the non-tex files so that the tex files are always on top.
(advice-add 'helm-list-directory :filter-return