Hi,
$this->characteristic doesn't exist on listings. Also, the data needed in $this->elements from the variants/characteristics isn't there either. And on top of that, the display/displayFE functions of type.characteristic isn't meant to be called more than once on a page.
So you won't be able to do it like that. It would basically require a lot more complex development.
You'd be better off loading the data from the database in the view yourself and displaying the dropdown yourself with custom javascript to replace the id of the product in the form/button.