It there a reason NOT to do it?
Да.Это не решит ни одной из перечисленных вами проблем.Точки сохранения в основном используются для частичного отката данных.Внешняя транзакция или точка сохранения - это то, что на самом деле зафиксировано.На самом деле ничего не сохраняется полностью до тех пор, пока не будет освобождена эта крайняя точка сохранения, что приведет к обновлению БД.Вы вернулись к той же проблеме, что и у вас со стандартными транзакциями.
Are there any pitfalls I need to be aware of?
Да.Транзакции или точки сохранения в многопоточном приложении могут довольно легко зайти в тупик, если вы обновляете одни и те же данные в двух разных потоках, которые, как я полагаю, составляют суть проблемы.Там нет никакой разницы между двумя в этом отношении.Вы должны знать, что вы обновляете в каждом потоке, и выполнять соответствующую синхронизацию.
Короче говоря, если у вас нет необходимости выполнять частичный откат транзакции, точки сохранения действительно не дадут вам много (кроме того факта, что ониим.)
Здесь нет серебряной пули.Похоже, вам нужно серьезно проанализировать ваше приложение и данные, которые могут быть обновлены в несколько потоков, и добавить некоторую синхронизацию в ваше приложение, если это необходимо.