Decoded vs Direct Connections

Yup! You can set a bias current by modifying the bias and gain values. Using nengo.Node is an alternative way (in my opinion, a more flexible way) to introduce bias currents to neurons:

ens = nengo.Ensemble(4, d)
bias_node = nengo.Node(1)

bias_transform = [[b0], [b1], [b2], [b3]]  # bN is the bias values for the Nth neuron

nengo.Connection(bias_node, ens.neurons, transform=bias_transform)

Yes. You are correct. Unfortunately, in the current implementation of nengo.Ensemble in Nengo core, the encoder computation is done regardless of whether or not they are in use. We are aware of this, and are planning to change the Nengo API to facilitate this kind of network configuration in the future. These changes are planned to be incorporated into the Nengo 4.0 release.

I should note that this feature is already available in the current NengoDL release. If you are using NengoDL, it automatically removes any operators that do not add any effective computation to the operator graph.