Edit - So, why bother with Primal at all? Jotun Bonebreaker wasn't pulling his weight, and Haunting Scream wasn't significantly better than things like dark return anyway. The Elysian cylixes did provide some good card draw, but it wasn't worth having power that didn't help me play Katra. I've taken out Primal entirely and also added Curtain Call to the market, because the card is still very good. I also added in Friendly Wisp to help avoid situations where I play one big thing and then run out of gas. So far the deck has been performing much better.
This deck is a blast to play. I haven't done much testing with it yet (just a gauntlet run and one throne match, which I won), but it feels pretty good. The deck has a bunch of different things going on: a lifegain theme, and ultimate theme, self-discarding, and a bunch of ramp. Let's break down the card choices by those themes, because there is some overlap.
Self-discarding -
Sporefolk,
Means to an End,
Feln Vow and
Jotun Bonebreaker
Sporefolk is probably the lowest impact card in the deck, but sometimes it is needed to get the ball rolling. Means to an End provides a steady flow of discarding during the game, and is also often a win condition. Feln Vow puts a sigil into the void for Katra and Hourglass. There are only four vows because the sigils often all get discarded, and then they become much worse after that. Bonebreaker is a strong threat that can quickly reach his ultimate while also providing consistent discard.
Lifegain -
Xenan Lifespeaker,
Dreamsnatcher,
The Merriest Mandrake,
Ayan, the Abductor,
Katra, The First Seal
Xenan lifespeaker gives our large threats, Ixtol, Bonebreaker, and Katra, lifesteal. Dreamsnatcher and Ayan naturally have lifesteal and are solid cards by themselves. The lifegain from mandrake and Katra are both a lot of small packets that can trigger multiple times each turn, making them particularly effective with mask.
Lifegain payoffs -
Means to an End,
Mask of Torment
These have already been mentioned above, but basically they keep providing increases in power and win conditions.
Ultimate theme -
The Merriest Mandrake,
Xenan Lifespeaker,
Dreamsnatcher,
Ayan, the Abductor,
Mask of Torment,
Jotun Bonebreaker
The mandrake is the main source of card advantage for the deck. He isn't absolutely necessary for this deck, because we have other ways to win and other ways to gain lots of power. Dreamsnatcher, Ayan, and the Mask all have rather expensive ultimates which are drastically reduced by the mandrake.
Ramp package -
Arcanum Hourglass,
Katra, The First Seal,
Mask of Torment,
Ixtol, Champion of Grodov
Arcanum hourglass and Katra replay the lands that end up in our void from the self-discard package. The mask triggers from our lifegain package, working particularly well with Katra. Turn 4 mask into turn 5 Katra can represent a huge growth in maximum power. One of the big payoffs for that is Ixtol, who can also ramp a bit himself. It isn't unusual for Ixtol to become a 20/20 or stronger.
Market -
Banish,
Haunting Scream,
Surgeon's Saw,
Coslo, Friendly Scavenger,
The End is Near
The market needs a lot of work; most of the cards I figured I'd need I took out and replaced to try other things. So this is a starting point. Mostly I just grab The End is Near or Haunting Scream. The End is Near is almost always what you want if you have Katra, or Hourglass, but no power in your void. Afterward, your draws become better, and you can ramp a bunch. Haunting screaming Katra can be a ton of value, and Ixtol or Bonebreaker can just win the game if they're big. Surgeon's Saw is there for lifegain. I often had situations where I had a lifespeaker out and a merchant, but no way to pull a lifesteal threat from my market, so I added saw and Coslo. Curtain call is another strong option, but I haven't tested it yet. Banish is there as a generically good removal spell.
Definitely open to suggestions. I posted this decklist the same day I made the deck, but I was excited enough that I figured it'd be good to share it.