I found that it is possible to use Serenity BDD with TestNG as long as you are also using jBehave. It works because SerenityStories extends jBehave's JUnitStores. JUnitStories supports (or rather doesn't consider)TestNG. Here's a fully functioning example:
https://github.com/BearSmash/serenitybdd-jbehave-testng-exampleIt was necessary to override SerenityStories.stepsFactory() and SerenityStories.storyPaths(). At least I couldn't figure out how to get it working otherwise, but that may be my own lack of understanding. The example would be quite simple without those overrides, so if someone could help me with that, I would appreciate it.
I hope this helps someone. TestNG is great, and I wouldn't want to give it up.