Quick notes from the debug sessions with @Paige and a few answers to hardware-specific questions:
External vs. Tessel power
In theory, the module should function almost identically on either one. In fact, the module does not know what source is providing its power and there is no way to query it in software.
The module should have better rejection to turning itself off when on external power, but this is unrelated to to its ability to communicate with Tessel. Lots more on why in this blog post.
In our tests here, we have not seen the module turn itself off with any regularity, nor have we observed electrical conditions which favor such an event (although it's impossible to watch all the time). This would theoretically be more likely to happen when the signal strength is low and, therefore, when a large amount of power is required to transmit to the cell tower, or when the path from the power supply to the module is non-ideal (highly inductive). The latter is fixable with a good USB cable/theoretically with external power.
On a related note, there exist AT commands which can query signal strength so you can decide whether now is a good time to transmit.
This is more a problem of Strings being slow on Tessel than overloading the SIM900. The restriction is also somewhat artificially imposed by Postmaster in an effort to make the output from the SIM900 easier to work with. The queuing approach you mention in #2 is a good one.
This is by design: the module has a power switch. It can be turned on via G3, or the mechanical button marked
I would start by breaking the functions we have in our API into smaller pieces so that you can figure out exactly what step is going wrong and what conditions (timeouts, mostly) favor success vs. errors.
You can use the library's built-in
_txrx function or bypass the library entirely and communicate with the SIM900 directly over UART. The commands you'll need can be found in our library, or in the AT Command Manual (which is also linked to in our library).
On a related/blatantly self-serving note, Postmaster and Packetizer could do with some refactoring and pull requests are always welcome