My first stab at the ball bouncing (which in my defense I did really, really late at night) was taking the result of the collideSprites() function, which returns, among other things, a vector called resolution_a (described as "Vector - How sprite A was pushed during the collision { x, y }"). So I just multiplied that vector with a constant and set that as the new speed for the sprite.
That kind of worked, but it was very inconsistent. Sometimes the balls would just pass through the viruses, and sometimes they would fly away super fast. It looked kind of bad, to be honest.
So I decided to fix this. I still wanted to use the c.resolution_a, since that seemed easier than having to calculate angles and stuff myself. So what I did was taking the returned vector, normalizing it using the normalize() function, and then multiplying it with the speed the ball had before the collision.This worked perfectly, and the bounces feels really good now. Very satisfying!