Address and data bus
Buses usually connect the central processing unit (CPU) with peripheral devices, like memory or other Input/Output devices.

To activate a memory you need to do two things:
- specify the cell in the memory you want to write to / read from  (that would be the address)
- give the data to write to the memory, or take the data from the memory (this information would go over the data bus)
- control the memory: tell the memory if this is a read or a write, etc.

So as you can see, in both READ and WRITE you must specify the address you want to write to, or to read from. So the address bus is uni-directional: from the CPU to the MEMORY.

The information itself goes in both directions. In a READ it goes from the memory to the CPU, and in a WRITE it goes from the CPU to the memory. Hence, the data bus is bi-directional.

The control bus is usually uni-directional: the CPU is the master and the peripherals are slaves. "Controlling" in the other direction goes via the interrupts mechanism.

Finally, as you mention, buses are just connected wires. 16bit means that there are 16 wires connected in parallel. So an address bus of 16bits can specify any address between 0 (=16 times 0) to $2^{16}-1=65535$ (=16 times 1). The data bus is capable of carrying 16bit of information, etc.