Sorry for the formatting, I'll try posting as code (should have read further!)
I think your approach will work if you change $ladder_table_fields so that it has the datatypes (not just the field names), i.e.
I tested something like you had where you wanted to pass in the field names as a list (array), but I couldn't get $sth->execute to see it in a list context. Passing it as individual scalars worked.