It turns out to be easy to do this with session data. When you’re adding an item to the cart (see the source for add_to_cart_action) you create a session variable, containing all your additional meta data:
That’s it. You do have to figure out how to get the order metadata out and do something useful with it, though. You may also want to clear the session data, from hooks into woocommerce_before_cart_item_quantity_zero, and woocommerce_cart_emptied. There’s gist here which has some example code for this.