Bill,
My two cents. This is a very common situation, many stations provide one (or more) cumulative rainfall values. Since WeeWX requires a per-interval or delta value all you do is pick one of the cumulative rain values (in your case Rain Today is the obvious choice) and calculate the difference between successive readings. There are a few things to be careful of, what happens if one of the values (the current or the previous) is None, what happens on startup when there is no previous value and what happens when the cumulative value resets to zero (eg a midnight reset) or the counter clocks over. All easily handled. You can probably pick just about any of the drivers except vantage and find that is how rain is calculated. There is even a function calculate_rain() in bin/weeutil/weeutil.py that will do it for you.
A cautionary word on rainRate, it means many things to many different people but typically rain rate is expressed as a per hour value rather than per five minutes. One other option to consider is to omit rainRate from your driver entirely and let WeeWX calculate it as a derived observation in the StdWXCalculate service. Or provide an option for the driver to either provide it or omit it.
Regards loop packets, some stations emit loop packets every so often, others emit them irregularly and others have to be polled. Those that are polled typically use a user defined interval and the results form the loop packet. In your case I would expect to see your driver emitting loop packets every 10 odd seconds. Just think of loop packets as higher frequency packets of observational data from which WeeWX synthesises archive records. The only thing to keep in mind is that if your sensors update every two minutes there is little point in polling every two seconds, but it sounds like you have are using an appropriate rate.
Gary