Hi, and thanks for reaching out, and I am sorry about the wait you have been having.
You are right that reviews are taking longer than they used to. We wrote about what is happening and what we are doing about it here: Important update: Addressing the long manual review times (Important update: Addressing the long manual review times).
On your main question, yes, self-distribution is an officially supported path. When you submit a version, choose “On your own” instead of “On this site”. That version is signed for self-distribution and is not published on AMO, and signing there is normally automatic rather than queued for manual review.
Two things to be clear about, though. Self-hosted does not mean unreviewed. Every version still goes through our automated scanners, and if something looks like it does not follow our policies, the add-on can be flagged for a manual look or blocked. And there is no way to sign a build yourself, at least not yet, so signing goes through us either way.
For the install experience, you do not need anything special. Host the signed .xpi on your site and link to it directly, served as application/x-xpinstall. Clicking that link in Firefox shows the standard installation prompt, the same doorhanger users see from an AMO page. No saving the file, no developer settings.
For updates, self-distributed add-ons do not get them from AMO, so you host your own update manifest and point browser_specific_settings.gecko.update_url at it. That is what gives your users automatic updates.
One caveat worth planning around: mixing a listed and a self-hosted build under the same add-on ID makes the two update paths compete. It is usually cleaner to give the self-distributed build its own ID.
And for the AMO listing itself, since your codebase is large, including your source code with a build script the reviewer can run genuinely speeds things up. This guide walks through it: Help our source code review process, add a build for AMO script (Help our source code review process: add a build-for-amo script).
Thank you!
-Christos