Is there a way to simulate convection with a particle system?
EDIT: Per Erik's comment...

Here's an example of a Node setup where the individual particles are on their own program.  I changed the particles to be emitted over time instead of all at once to give a little more separation between particles . The smaller particles move faster than the larger ones but you can easily remove that if it doesn't suit your requirements.  

The modulus operator (Math Node) is for looping the simulation indefinitely.  This setup essentially uses the Minimum of the two range nodes as well as the length of time the particle has been living to determine where the particles should be along the Z-axis.



Of course there's a lot of room for tweaking, improvement, randomization, etc. 
In this gif, I added a little velocity in the X-direction using Blender's own particle settings.







EDIT 2:

Just saw your edit to your question.  Here's an example with smoke simulation.  You just need to add Smoke to the original object and make sure you select Copy Full Object so that it also copies the Smoke sim with each Instantiation.









EDIT 3 (per Erik's comment): 

The single-tri smoke emitter objects will simply have no bearing on bake, simulation, or render times.  Blender will crash from the smoke and particle sim long before the number of triangles.

I would concentrate on making the smoke more realistic before adding more particles.  I understand that you'll need more than hundred, but the smoke is going to be the makeup of the cloud and there's a lot of "tweakability" in the smoke sim.  The particle objects are only for emitting and serving as a method to give you control over location.

Here is a sim with a little bit of turbulence added (affecting the particle objects and the smoke).  Sorry it's so small and crappy, I had to keep it under 2MB for upload:



And here's a happy little cloud render from this scene:



Here's the unbaked blend: