I haven't run your code as I don't have the soil library, I have written collision routines though so perhaps I can be of a little help..
If my post doesn't help, someone else will be along in a while to do so I am sure

Firstly in the beginning, precalculate your masks as you have been doing as 1's and 0's.
So transparrent pixels are 0 and filled pixels are 1.
To optimise your collision detection routine, use bounding box method to eliminate a lot of pixel checking that would not be needed.
Then the way I would do it is to have a collision buffer... Or two of them actually (will become clear).
The collision buffers need only be one dimensional as you can just check one line at a time and exit the process if a collision is detected (and you get a speed gain too this way as you'll probably not need to check all lines of a sprite

)
Anyway, if the sprites in your game are all the same size it's easier, if not it's still straight forward.
Lets say all your sprites are 20*20
define the collision buffer as two seperate arrays of 40 elements.
Now you need to load the collision buffers with the correct lines of your masks.
So let's say sprite 1 is at screen x pos 100 and sprite 2 is at screen x pos of 110
Work out which one is leftmost.
In this case it's sprite 1
So the first 20 elements of buffer one are going to be the mask pixels of sprite 1
Then the next sprite is positioned 10 pixels to the right.
So the second collision buffer will have elements 10 - 30 loaded with the sprite mask of sprite 2.
Bear in mind here that I am not specifying which lines of the collision mask to load in, you will need to calculate this offset too as the sprites will likely be on different heights in the screen. (You only want to check the parts of them that overlap).
Now you should have two arrays loaded with bits from a mask.
Convert the elements in each array into 2 seperate binary numbers and perform an and operation on them.
If the result is one then there has been a collision.
It's a little bit sketchy because it's off the top of my head but I hope it helps you along.