Given that User#companyId is a Long (I guess), you have to use some kind of Editor<Long> (or an IsEditor of some kind of Editor<Long>), which ValueListBox<Company> obviously isn't.
You can make it work by not using ValueListBox as an editor (@Editor.Ignore) and instead implement ValueAwareEditor<User> on the parent: explicitly select the company from companyId in setValue, and update companyId from the selected Company in flush(). As an alternative, you can use a simple LeafValueEditor<Long> for the companyId, that would do the same (forward to the ValueListBox) in its setValue and getValue.
As for your second question, well, don't use ValueListBox then; use a ListBox instead and manually add items.