Okay, after a bit of personal trial/error, I got my two answers:
First, after looking into the code, wd is not supposed to be used that way, and does not support to have several values (unlike 'col='). It seems that 'wd=' is not meant to be used directly for specifying the beanplot width in a normal use. Indeed, when no 'wd' (or wd=NA) is provided, wd is computed from 'maxwidth=', but normalized to the highest value of all the density functions. Hence it seems more appropriate to specify 'maxwidth=' if one wants to control the width of the beans.
Second, I wrote some code to actually achieve what I want. It may be messy, please fell free to enhance it. This example can be used for any variation of parameter that is not supported by the function beanplot natively.
You will notice that the code shows an example of why 'wd=' is still important, since we want all the width values of the bean to be normalized one time, for all the density plots.
col_list = list('orange','yellow')
wd_fac = aggregate(x~f1,Test,length)$x # get the size relative to the number of points in each bean
wd_fac <- wd_fac/max(wd_fac)
par(mfrow=c(1,2))
## Normal plot
beanplot(x~f1,Test, col=col_list)
## Our plot
bp <- beanplot(x~f1,Test,what=c(T,F,F,F)) # plots the line and frames + get the general parmeters
sapply(1:length(levels(Test$f1)),
function(X){
beanplot(subset(Test, f1 == levels(f1)[X])$x,
col=col_list[X],
bw = bp$bw, # we may want to keep the bandwidth
wd= bp$wd*wd_fac[X],
at=X,
what=!c(T,F,F,F),
add = T)}
)