There are a lot of reasons a team may accept a veteran reliever as part of a trade package. Teams often trade players simply to even out the money. They also trade when they don't want to push a prospect too fast. Especially teams looking at total rebuilds or know they're more than a year or two away. They may also hope a reliever who has a year or more of control with some record of success gets hot in the second half and creates some trade value.
Take Milner for example. A team like the White Sox can offer him arbitration, shop him around to see if there are any takers. If not they can cut him or keep him and see if he rebounds for next season's deadline. If he doesn't, they weren't going to contend anyway. All they lose is a few million. For them it's not a big deal. What is certain is the only way to squeeze another player out of the original trade is to have him on the roster.