I've tried
sending myself an e-mail (yes really; this occasionally works for a few minutes)
Toggling contacts on and off (suggested in several places, at least of iOS 8)
Both of these, the only specific attempts you've made to solve your issue (and the only two that seem to be reported as effective) both involve accounts.
My best guess for why your issue is occurring (based on this connection) is that something with your email accounts is screwed up, giving Spotlight a format of information it can't handle, effectively crashing it. The idea that your accounts are causing it is one uncommon thing that isn't changed by a factory reset, given that you probably re-signed-in to at least one of your accounts immediately after a reset.
How should you stop this issue from occurring?
- Sign out of your email accounts (in your mail settings) and delete all of the contacts, emails, calendar events, and notes from your iPhone.
- Sign out of your iCloud account and remove any information associated with that account from your phone (this might involve a factory reset without restoring from a backup and without signing into your iCloud account).
- Turn off Siri (which has access to and can control your accounts).
Once you delete all email/account related data from your iPhone, I suspect this issue will cease to occur to you, and Spotlight should start working again.
Other tips from other forums:
Make sure you're not hiding contacts in the Contacts app.
Shut down everything from appearing in Spotlight then only enable Contacts.
Reset your network settings in Settings->General->Reset
The only official suggestion from Apple
Make sure you're in a country that supports Spotlight Search, that your language is set to a language spoken in one of those countries, and that your device region is set to one of those countries.