I always found Flask-SQLAlchemy a strange approach because it ties opposite and somewhat orthogonal parts of the request lifecycle together. When requests-to-data-transactions is a 1-1 relationship it's a convenience, but once you step out of that I think it's better to do things by hand.
My main app has a simple layer structure of "request > business logic > data layer". All of the business logic functions start a SQLAlchemy transaction using a Python decorator that is ~10 lines of SQLAlchemy code.
https://github.com/Pylons/pyramid-cookiecutter-starter/blob/...
I think same approach should work well for flask - just tie the session to the request object on first access.
Side note: I think we met on IRC few years ago ;-)