Hallelujah!!! I got this to work. My solution is a little bit hacky and I know there is a right way to do this, but I am not quite ready to jump into writing my own module.
I found that if instead of checking the order total in my workflow I check for products of a specific shipping type everything goes as planned. My next problem was that the only selectable product shipping type was "Small Package". I am pretty sure that I can create my own shipping type by using hook_shipping_type, but as I said I am not quite ready for that. My hacky solution was to install the In-store Pickup Shipping module which gave me a "Customer Pickup" shipping type. I added this default shipping type to the products that are eligible for free freight. I adjusted my Free Shipping flatrate shipping workflow to look for "Customer Pickup" products and apply the $0.00 shipping. Likewise I created a flatrate shipping type for lift gate and residential delivery. I also created a flatrate workflow for heavy orders. If an orders total weight is over 150 pounds I am charging a flat ground weight of $75.
This does not solve the problem that flatrate/workflow-ng will not work when evaluating an orders total sale price, but it gives me the functionality I need.
