I believe the most sustainable and fair payment model is paid app at version X, which will get bugfixes indefinitely (or for a long time at least), but no new features. Later a new paid version comes out that will contain the new features, but that way existing users that find the previous version they paid for enough can continue to use it, yet the developer gets a steady stream of money as presumably many of the users will buy the newer version.
See the Reeder app for an example.
Though this doesn’t work where service fees are part of the equation, perhaps the best way to handle that would be passing the cost down to users through an optional subscription.