An easy way is to set the edges to bleed, maybe one or two pix. That will give it a soft edge.
Also, use the paintbucket on the layer beneath the one you are using. Make a new one if you don't have it. Use the select tool to select the entire area you want colored, then paintbucket. The color will go underneath the lines, and since they are on another layer you won't get that line of color where your lineart bleeds.
If you want to use the paint bucket to fill in line art, the line art needs to be drawn without any anti aliasing, so that when you use the bucket tool it runs right up to the edge of a solid line instead of a smoothed one. It also needs to create a fully closed shape, where all of your lines meet another line so that the fill doesn't go outside your lines like it has in the image you provided. Unfortunately painting pictures without anti aliasing makes it pretty difficult to get smooth looking lines in a raster program like Photoshop, but you might be able to start without anti aliasing and then turn it one once you're ready to shade. Honestly I think it's a lot more work to create such perfect line art just to use the paint bucket to fill it in, than it is/would be to just paint a less perfect lineart in myself.
There is no shortcut I'm afraid, you have to draw colour in all the areas you want flat colour on a layer under your linework. OR you can bucket tool it, like you did, and then use your paintbrush and fix all the edges yourself by colouring right up to the edges of the lines. That also works.
Yeah, your lines are antialiased so the pixels tone outwards so even if you don't see it with the naked eye they are in fact there. I'd suggest drawing with a more solid brush and fiddling with the treshold or simply do it with the pencil tool.
Another posibility is instead of painting by hand to flat it you can use the lassoo tools and select the area to fill it later. Use ctrl and shift to add or subtract from the selection. With your lineart on its own layer ofcourse.