First things first. If you've worked out how to change the contents of a texture, then thats half the problem solved. Don't forget the import mode needs to be set to advanced and read/write needs to be set to true for the atlas.
There will undoubtedly be quite a high CPU cost to updating textures like this - and in a lot of cases, it might be better to draw into the texture using pixel sized geometry. The reason for this is the GPU usually is drawing a previous frame to the one currently being rendered into, and for the setpixel function to occur at the correct time, it involves making a copy, and then updating the gpu copy at the correct time. As you can imagine this will involve some quite a bit of traffic, and performance will vary somewhat depending on the platform you're working on and what it really does internally.
If you really want to modify the texture, you don't have to care about animations, or indeed anything else apart from the texture. To get the texture, the easiest thing to do is to grab it from a sprite using the sprite collection. Simply get sprite.GetCurrentSpriteDef().material.mainTexture.
You can also change the material of this sprite at runtime - the only catch being you'll have to do it again after each frame change. This is due to how the whole thing works internally. I'm going to be adding an "ignore material" flag on the sprite, so it will not change the material explicitly, but that won't be in the next release. The material change is necessary mainly for multi-atlas support. You can also have sprites in an animation from any sprite collection and mix and match that way, so it does need to change material.
Another option which sounds like a LOT of work, but really isn't at all, is to create a copy of all sprites in the sprite collection, and automatically create a duplicate set of animations automatically. Doing it by hand would be ridiculous, but you can script all of this really easily. Just create a menu entry which edits the sprite collection, taking each sprite and creating a duplicate named _COPY, and for the animations, do the same, and switch the spriteIDs around. That way, you won't have to do any nasty stuff, but everytime the sprite collection changes, run this process again - it should just work, if you code it to delete all _COPY entries before it starts. Once you have template editor script for something like this, it really does improve your workflow very significantly.